![]() |
Probleme Netzwerk-Login
Moin,
im Moment habe ich auf meinem Laptop eine Batch-Datei mit der ich mich ins Heim- oder Firmennetz einlogge:
Delphi-Quellcode:
Das ganze klappt natürlich auch :) Jetzt wollte ich das in Delphi nachbauen:
echo 1) Einloggen in Firmenrechner per LAN
echo 2) Einloggen in Homeserver set /p Auswahl=...Auswahl eingeben : :start2 rem rem Löschen aller alten Freigaben net use * /delete /yes if %Auswahl%==2 goto LogHome rem Einloggen in Firma net use i: \\192.168.20.10\fileserving Password /USER:Arbeitsgruppe\User net use o: \\192.168.20.11\oralog Password /USER:Arbeitsgruppe\User goto Ende rem Einloggen Zuhause :LogHome net use i: \\Homeserving\Fileserving Password /USER:Arbeitsgruppe\User net use j: \\Homeserving\Mediaserving Password /USER:Arbeitsgruppe\User goto Ende Das Trennen funktioniert so (und das ohne Probleme):
Delphi-Quellcode:
Das Verbinden geschieht über:
procedure NetzwerkLaufwerkeTrennen;
var Ergebnis: Cardinal; begin Ergebnis := ShellExecute(0, nil, PChar('net'), PChar('use * /delete /yes'), nil, SW_SHOW); if Ergebnis <> 42 then ShowMessage(FloatToStr(Ergebnis)); end;
Delphi-Quellcode:
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; procedure LaufwerkeVerbinden; var Ergebnis: Cardinal; begin (* Firmenrechner *) NetzwerkLaufwerkeTrennen; if not ConnectNetworkDrive(LW1Letter_Fa, LW1Path_Fa, UserName, UserPathWord, true) then RaiseLastOSError; if not ConnectNetworkDrive(LW2Letter_Fa, LW2Path_Fa, UserName, UserPathWord, true) then RaiseLastOSError; end; Und da habe ich ein Problem: Wenn ich versuche mich zu verbinden bekomme ich einen Fehler 1202: Der lokale Gerätename hat eine gespeicherte Verbindung zu anderen Netzwerkressourcen. Was mache ich da falsch ? Irgendwas funktioniert dann ja bei dem Login in Delphi anders als bei Batch-Variante - nur was ?? Gruß Hans |
AW: Probleme Netzwerk-Login
Ich würde sagen, das ShellExecute beim Trennen funktioniert nicht. Du solltest stattdessen die cmd.exe aufrufen und dort als Parameter /k bzw. /c und den "net use..." Befehl übergeben. Da gibts auch einige Beiträge dazu im Forum.
|
AW: Probleme Netzwerk-Login
Ja, entweder er trennt nicht richtig (!=42 ?) oder die beiden Connect Befehle nutzen evtl das gleiche Laufwerk (das dann beim 2. Aufruf schon belegt ist)
Kann man aber ohne Kenntnis der Aufrufparameter nicht viel mehr zu sagen. |
AW: Probleme Netzwerk-Login
Was soll die 42 eigentlich bedeuten (außer der Antwort auf die Frage nach dem Leben, dem Universum und einfach allem)?ShellExecute gibt doch im Erfolgsfall eine Pseudo-hInstance zurück, die kann man wohl eher schlecht mit einem festen Wert vergleichen.
Zitat:
|
AW: Probleme Netzwerk-Login
Code:
akzeptiert Wildcards? Das ist mir neu.
net use /delete
|
AW: Probleme Netzwerk-Login
Hallo,
ich habe mir angewöhnt, eine Batch-Datei zu erzeugen und diese per (wie oben gezeigt) ShellExecute cmd /C auszuführen. Heiko |
AW: Probleme Netzwerk-Login
Das mit dem Batch-Job ist eine Idee .... Ich selber habe ja manchmal das Gefühl als ob in den Delphi-Programm das Trennen noch nicht beendet ist wenn das Verbinden beginnt. IRgendwie waren die alten Zeiten ja doch besser als alles linear abgearbeitet worden ist :-D
Vielen Dank für die Ideen HAns |
AW: Probleme Netzwerk-Login
Hmm..
Oder Du machst es ganz ohne ShellExecute und Batch mit WNetEnumResource WNetAddConnection2 WNetCancelConnection2 Damit geht es über eine Windows-API. |
AW: Probleme Netzwerk-Login
Zitat:
Und ist ShellExecute nebenläufig oder nicht? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz