Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 31. Okt 2008, 13:58
Habe gerade festgestellt, daß NetUseAdd nicht in der Standard Delphi Windows API vorhanden ist. Aber diese Wrapper sollten den gleichen Zweck erfüllen und benötigen lediglich die Windows Unit.

Delphi-Quellcode:
function NetUseAdd(const LocalName, RemoteName, UserName, Password: string; var AccessName: string): DWord;
var
  netResource: TNetResource;
  dwResult, dwBufSize, dwFlags: DWORD;
  hRes: DWORD;
  buf: array[0..1024] of Char;
begin
  dwFlags := CONNECT_REDIRECT;
  ZeroMemory(@netResource, sizeof(TNetResource));
  with netResource do begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(LocalName);
    lpRemoteName := PChar(RemoteName);
    lpProvider := nil;
  end;
  dwBufSize := Sizeof(buf);
  result := WNetUseConnection(0, netResource, PChar(UserName), PChar(Password), dwFlags, buf, dwBufSize, dwResult);
  if hRes = NO_ERROR then
    AccessName := buf;
end;

function NetUseDelete(const LocalName: string): Boolean;
var
  hRes: DWORD;
begin
  hRes := WNetCancelConnection2(PChar(LocalName), CONNECT_UPDATE_PROFILE, true);
  result := (hres = NO_ERROR);
end;
Bei NetUseAdd kann LocalName leer bleiben, dann wird automatisch ein freier Laufwerksbuchstabe vergeben. Bitte die gemappten Laufwerke immer wieder mit NetUseDelete freigeben, da sonst irgendwann keine Laufwerksbuchstaben mehr frei sind.

Wenn nicht benötigt können Username und Password auch leer bleiben.
Uwe Raabe
  Mit Zitat antworten Zitat