怎样自己编程实现增加个虚拟的盘符或增加有盘符的网络硬盘

解决方案 »

  1.   

    映射网络盘
    http://search.csdn.net/Expert/topic/2483/2483810.xml?temp=.5242884
      

  2.   

    subst z: \\127.0.0.1\c$\windows
      

  3.   

    subst实现非常简单,而且速度比映射网络盘的方法快很多
      

  4.   

    真正的网络硬盘是用VXD实现的,要做一个虚拟设备驱动程序。
      

  5.   

    1.有没有办法编程实现在 我的电脑 这个下面增加个快捷方式2.还有就是那里有网络硬盘是用VXD实现的方面的资料.
      

  6.   

    http://www.delfan.com/language/delphi/net/subst.html
    模拟DOS命令 - subst 来源:未知 
    unit Subst; 

    API for work with substitution device (see dos command "subst"). 
    Win 9x/NT/2000/XP compatible
    ver. 1.2 Last rev. 25 Feb 2002Freware with source.Copyright (c) 2000-2002, SoftLab MIL-TEC Ltd
    Web: http://www.softcomplete.com
    Email: [email protected] SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED
    "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR
    ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED.
    NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.
    THE USER MUST ASSUME THE ENTIRE RISK OF USING THE ACCOMPANYING CODE. // 请注意此段文本Permission is granted to anyone to use this software for any purpose,
    including commercial applications, and to alter it and redistribute it
    freely, subject to the following restrictions:1. The origin of this software must not be misrepresented, you must
    not claim that you wrote the original software. If you use this software
    in a product, an acknowledgment in the product documentation
    would be appreciated but is not required.
    2. Altered source versions must be plainly ed as such, and must not be
    misrepresented as being the original software.
    3. Original copyright may not be removed or altered from any source
    distribution.
    }interfaceuses Windows, SysUtils;function SubstCreate(DriveLetter: Char; const Path: string): Boolean;
    // create subst device. Path must be a real folder.function SubstRemove(DriveLetter: Char): Boolean;
    // destroy subst device.function SubstQuery(DriveLetter: Char): string;
    // get Path for subst device.
    // return empty string if DriveLetter is not subst-deviceimplementationprocedure VxDCall; external kernel32 index 1;function SubstCreate(DriveLetter: Char; const Path: string): Boolean;
    var drvno: byte;
    buff: array[0..256] of char;
    FPath: string;function AddSlash(const Path: string): string; {??áàa???ì \ ???è íà??}
    begin
    if (Path = '') or (Path[Length(Path)] <> '\') then Result:=Path+'\'
    else Result:=Path;
    end;begin
    if Path[Length(Path)] = '\' then
    FPath:=Copy(Path,1,Length(Path)-1)
    else
    FPath:=Path;
    if Win32Platform = VER_PLATFORM_WIN32_NT then begin
    buff[0]:=DriveLetter;
    buff[1]:=':';
    buff[2]:=#0;
    Result:=DefineDosDevice(0,buff,PChar(Path));
    end else begin
    FPath:=ExtractShortPathName(FPath);
    if FPath <> '' then begin
    drvno:=Ord(UpperCase(DriveLetter)[1])-64;
    StrPCopy(buff,FPath);
    asm
    pushad
    push es
    xor ebx, ebx
    mov bh,0
    mov bl,drvno
    lea edx,buff
    push 0 //ECX (unused)
    push 71AAh
    push 2A0010h
    call VxDCall
    pop es
    popad
    end;
    end;
    Result:=ANSIUpperCase(AddSlash(SubstQuery(DriveLetter))) = ANSIUpperCase(AddSlash(Path));
    end;
    end;
      

  7.   

    function SubstRemove(DriveLetter: Char): Boolean;
    var drvno: byte;
    Drive,Path: string;
    begin
    if Win32Platform = VER_PLATFORM_WIN32_NT then begin
    SetLength(Drive,3);
    Drive[1]:=DriveLetter;
    Drive[2]:=':';
    Drive[3]:=#0;
    Path:=SubstQuery(DriveLetter);
    Result:=DefineDosDevice(DDD_REMOVE_DEFINITION,PChar(Drive),PChar(Path));
    end else begin
    drvno:=Ord(UpperCase(DriveLetter)[1])-64;
    asm
    pushad
    push es
    xor ebx, ebx
    mov bh,1
    mov bl,drvno
    push 0 //ECX (unused)
    push 71AAh
    push 2A0010h
    call VxDCall
    pop es
    popad
    end;
    Result:=SubstQuery(DriveLetter) = '';
    end;
    end;function SubstQuery(DriveLetter: Char): string;
    var drvno: byte;
    buff: array[0..256] of char;
    lbuff: array[0..256] of char;
    begin
    if Win32Platform = VER_PLATFORM_WIN32_NT then begin
    lbuff[0]:=DriveLetter;
    lbuff[1]:=':';
    lbuff[2]:=#0;
    buff[0]:=#0;
    QueryDosDevice(lbuff,buff,256);
    Result:=StrPas(buff);
    if Copy(Result,1,4) = '\??\' then
    Result:=Copy(Result,5,Length(Result))
    else
    Result:='';
    end else begin
    drvno:=Ord(UpperCase(DriveLetter)[1])-64;
    buff[0]:=#0;
    asm
    pushad
    push es
    xor ebx, ebx
    mov bh,2
    mov bl,drvno
    lea edx,buff
    push 0 //ECX (unused)
    push 71AAh
    push 2A0010h
    call VxDCall
    pop es
    popad
    end;
    Result:=StrPas(buff);
    if Result = '' then Exit;
    // convert to longfilename
    asm
    // expand long path
    pushad
    push ds
    push es
    xor ebx, ebx
    lea esi, buff
    lea edi, lbuff
    mov ecx,0
    mov cl, 2
    mov ch, 0
    push ECX
    push 7160h
    push 2A0010h
    call VxDCall
    pop es
    pop ds
    popad
    end;
    Result:=StrPas(lbuff);
    end;
    end;end.
      

  8.   

    Subst或类似的方法想强大,就是用驱动的方法,如VMWare Disk Mount工具,可以建立Virtual Driver的http://lysoft.7u7.net