测试环境,DELPHI XE2版本,系统WIN10
建立过程  
procedure TForm1.d(const driver, remote, pass, name: string);
var netsource:TNetResource;
begin
  with netsource do
  begin
    dwType:=RESOURCETYPE_ANY;
    lpLocalName:=PwideChar(driver);
     lpRemoteName:=PWideChar(remote);
     lpProvider:='';
  end;
  WNetAddConnection2(netsource,PWideChar(pass),PWideChar(name),CONNECT_UPDATE_PROFILE);
end;
调用过程
procedure TForm1.Button5Click(Sender: TObject);
begin
   d('x:','\\172.16.0.20\pro,'123456','cd\10001') ;
end;driver为映射驱动器盘符   ,remote为网络映射路径,pass为密码,name为域账户
运行之后,始终映射不出来,用DOS 的net  use可以,但是现在要用这个函数来实现,有大神给点建议。

解决方案 »

  1.   

    首先,如果你已经有相同映射连接,是不允许再次连接的,你最好试一下将所有映射全部清空后再次测试以下代码:procedure TForm1.d(const FDriver, FRemote, FPass, FUserName: string);
    var
      FNetSource: TNetResource;
    begin
      FillChar(FNetSource, SizeOf(FNetSource), 0);
      with FNetSource do
      begin
        dwScope := RESOURCE_REMEMBERED or RESOURCETYPE_DISK;
        dwType := RESOURCETYPE_ANY;
        lpLocalName := PChar(FDriver);
        lpRemoteName := PChar(FRemote);
        lpProvider := nil;
      end;
      if WNetAddConnection2(FNetSource, PChar(FPass), PChar(FUserName),
        CONNECT_UPDATE_PROFILE) <> 0 then
        ShowMessage(SysErrorMessage(GetLastError));
    end;