Вот то, что я использую для подключения и сопоставления удаленного диска с буквой локального диска (вместе с соответствующей операцией отображения). После того, как вы сопоставили диск с буквой диска, вы копируете, как если бы вы делали это на любом другом диске:
function MapNetworkDrive(const RemoteName, LocalDrive,
UserName, Password: string): Boolean;
var
NetRes: TNetResource;
Res: DWord;
begin
Result := True;
FillChar(NetRes, SizeOf(TNetResource), 0);
NetRes.dwType := RESOURCETYPE_DISK;
NetRes.lpRemoteName := PChar(RemoteName);
NetRes.lpLocalName := PChar(LocalDrive);
Res := WNetAddConnection2(NetRes, PChar(Password), PChar(UserName), 0);
Result := (Res = NO_ERROR);
if not Result then
SysErrorMessage(Res);
end;
function TForm1.UnmapNetworkDrive(const LocalDrive: string): Boolean;
var
Res: DWord;
begin
Res := WNetCancelConnection2(PChar(LocalDrive), 0, True);
Result := (Res = NO_ERROR);
end;
Пример использования:
begin
if MapNetworkDrive('\\192.168.1.56\C$', 'H:', 'fred', 'password') then
begin
try
// Do whatever between local drive and drive 'H:'
finally
UnmapNetworkDrive(Local);
end;
end;
end;