我要问的问题是:
    我知道了该共享目录所在机的密码了,
    如何在程序里设置好用户密码,这样不必每次我的程序访问这个目录的时候都要输入密码!

解决方案 »

  1.   

    function LoginServer(sFileDir, sUserName, sPassword:String):Boolean;
    var
        iCount : Integer;
        bSuccess : Boolean;
        lpNetResource : NETRESOURCE;
        Flags,lpResult,lpBufferSize,dwRet : DWORD;
        lpAccessName : Array [0..1024] of char;
    begin
        lpNetResource.dwScope := RESOURCE_GLOBALNET;
        lpNetResource.dwType := RESOURCETYPE_DISK;
        lpNetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;
        lpNetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
        lpNetResource.lpLocalName := nil;
        lpNetResource.lpRemoteName := PChar(sFileDir);
        lpNetResource.lpProvider := nil;    Flags := 0 or CONNECT_PROMPT or CONNECT_UPDATE_PROFILE;    lpResult := 0;
        lpBufferSize := 1024;
        dwRet := WNetUseConnection(HWND(nil),lpNetResource,PChar(sPassword),PChar(sUserName),Flags,lpAccessName,lpBufferSize,lpResult);    if dwRet = NO_ERROR then
        begin
            Result := true;
        end
        else
        begin
            Result := false;
        end;
    end;
      

  2.   


    localname:本地磁盘号 如:Y: Z: 
    remotename: 共享路径 如 :\\server\share
    username : 用户名
    password: 密码
    function connectserver(localname: string; remotename: string; username: string; password: string): boolean;
    var
      NetSource: TNetResource; Errinfo: longint;
    begin
      with NetSource do begin
        dwType := RESOURCETYPE_ANY; //RESOURCETYPE_DISK
        lpLocalName := pchar(localname);
             // 将远程资源映射到此驱动器
        lpRemoteName := pchar(remotename);
            // 远程网络资 源
        lpProvider := '';
            // 必须赋值,如为空则使用lpRemoteName 的值。
      end;
      ErrInfo := WnetAddConnection2(NetSource, pchar(password), pchar(username), 0);
      result := (ErrInfo = NO_ERROR);
    end;
    API:  WnetAddConnection2
      

  3.   

    function LoginServer(sFileDir, sUserName, sPassword:String): boolean;
    var
        iCount : Integer;
        bSuccess : Boolean;
        lpNetResource : NETRESOURCE;
        Flags,lpResult,lpBufferSize,dwRet : DWORD;
        lpAccessName : Array [0..1024] of char;
    begin
        lpNetResource.dwScope := RESOURCE_GLOBALNET;
        lpNetResource.dwType := RESOURCETYPE_DISK;
        lpNetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;
        lpNetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
        lpNetResource.lpLocalName := nil;
        lpNetResource.lpRemoteName := PChar(sFileDir);
        lpNetResource.lpProvider := nil;    Flags := 0 or CONNECT_PROMPT or CONNECT_UPDATE_PROFILE;    lpResult := 0;
        lpBufferSize := 1024;
        dwRet := WNetUseConnection(HWND(nil),lpNetResource,PChar(sPassword),PChar(sUserName),Flags,lpAccessName,lpBufferSize,lpResult);    if dwRet = NO_ERROR then
        begin
            Result := true;
        end
        else
        begin
            Result := false;
        end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     if LoginServer('\\tchtc-svr','tchtc','tchtc') then
      showmessage('成功登录\\tchtc-svr')
     else
      ShowMessage('登录\\tchtc-svr');
    end;