Thursday, July 03, 2008

How to access network drive from delphi

Source: http://www.festra.com/wwwboard/messages/12691.html

I think I found a solution.

To ping the workstation, I use the IPICMP component from Internet Professional (used to be a set of commercial VCLs from TurboPower, but now available for free at htp://sourceforge.net/projects/tpipro). Check out the exPING sample code.

To map a drive, I use the API call: WNETADDCONNECTION2.
Here is some sample code:

function MakeDriveMapping(DriveLetter: string; DirectoryPath: string; 
Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
NetResource: TNetResource;
dwFlags: DWORD;
begin
with NetResource do
begin
dwType := RESOURCETYPE_DISK;
lpLocalName := PChar(DriveLetter);
lpRemoteName := PChar(DirectoryPath);
lpProvider := nil;
end;
  if (RestoreAtLogon) then
dwFlags := CONNECT_UPDATE_PROFILE
else
dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(Password), 
PChar(Username), dwFlags);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if (MakeDriveMapping('X:', '\\192.16.2.101\dir',
'Administrator', 'adminpassword', False) = 0) then
ShowMessage('OK')
else
ShowMessage('Error!');
{ possible causes:
if mapping already exists or if credentials incorrect
or directory path incorrect }
end;

0 Comments: