Home » Tipps & Tricks » Netzwerk/Internet » Netzwerk » Netzlaufwerke ohne Dialog verbinden

Netzlaufwerke ohne Dialog verbinden

Mithilfe der Funktion „WNetAddConnection2“ lassen sich Netzlaufwerke erstellen, ohne auf den Windows-eigenen Dialog zurückzugreifen.Die Funktion erwartet hier 5 Parameter. Dem Parameter ADrive muss der Laufwerksbuchstabe des zu erstellenden Laufwerks übergeben werden (nur der Buchstabe, ein Zeichen!). ADirectory enthält den Namen des Netzwerkverzeichnisses (beispielsweise \computernamelaufwerk (d)verzeichnis). Falls vorhanden können den nächsten beiden Parametern Benutzername und Kennwort zugeordnet werden. Soll das Netzlaufwerk nach dem nächsten Windows-Start wieder verbunden werden, übergeben Sie dem letzten Parameter den Wert „True“, ansonsten „False“.

function ConnectNetworkDrive(const ADrive: String;
  const ADirectory, AUsername, APassword: String;
  const ARestoreAtLogon: Boolean ): Boolean;
var
  NetResource: TNetResource;
  dwFlags:     DWORD;
  lPwd, lUser: PChar;
begin
  NetResource.dwType:=RESOURCETYPE_DISK;
  NetResource.lpLocalName:=PChar(ADrive);
  NetResource.lpRemoteName:=PChar(ADirectory);
  NetResource.lpProvider:=nil;

  if ARestoreAtLogon then
    dwFlags:=CONNECT_UPDATE_PROFILE
  else
    dwFlags:=0;

  if AUsername'' then
    lUser:=PChar(AUsername)
  else
    lUser:=nil;

  if APassword'' then
    lPwd:=PChar(APassword)
  else
    lPwd:=nil;

  Result:=WNetAddConnection2(NetResource,
                             lPwd,
                             lUser,
                             dwFlags)=NO_ERROR;
end;

Aufgerufen werden kann die Funktion beispielsweise so:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ConnectNetworkDrive('X:','\computer1laufwerk (d)alt', '', '', False) then
    Showmessage('Netzlaufwerk konnte erstellt werden')
  else
    RaiseLastOSError;
end;

Die Aufschlüsselung der Rückgabeparameter finden Sie in der PSDK unter dem Stichwort „WNetAddConnection2“.Getrennt werden kann die Verbindung mithilfe der Funktion „WNetCancelConnection2“. Sie erwartet als ersten Parameter den entsprechenden Laufwerksbuchstaben. Steht der zweite Parameter auf CONNECT_UPDATE_PROFILE, wird das User-Profil ebenfalls aktualisiert. Sollte das Laufwerk also beim nächsten Windows-Start wieder verbunden werden, geschieht dies in Zukunft nicht mehr. Ansonsten kann dieser Parameter auf 0 stehen. Steht der dritte Parameter auf „True“ wird die Trennung erzwungen, sie findet also auch statt, falls gerade auf das Laufwerk zugegriffen wird.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if WNetCancelConnection2('x:',0, True)=NO_ERROR then
    Showmessage('Verbindung konnte getrennt werden.')
  else
    RaiseLastOSError;
end;

Weitere Informationen zu dieser Funktion finden Sie in der PSDK unter dem Stichwort „WNetCancelConnection2“.RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden.