Autor Beitrag
Jojojoxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Mo 12.02.07 22:30 
Hallo!

Ich möchte gerne Netzlaufwerk einhängen. Ich habe da an den "net use" Befehl gedacht, den ich über die shell ausführen könnte. Das Problem daran ist aber, dass ich kein feedback erhalte, ob das einhängen erfolgreich war. Beim einhängen soll auch ein Benutzername/Kennwort eingegeben werden können. Gibt es dazu eine Möglichkeit?
Danke euch!
mfg

Jojo
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 12.02.07 22:40 
Hallo!

Quelle: EasyerHelper ([url]www.dsdt.info[/url)

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 \\computername\laufwerk (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".

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
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:','\\computer1\laufwerk (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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
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.


LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Di 13.02.07 00:42 
Hi!

Vielen Dank!
Hat mir sehr geholfen!
mfg

Jojo