Moin,
im Moment habe ich auf meinem Laptop eine Batch-Datei mit der ich mich ins Heim- oder Firmennetz einlogge:
Delphi-Quellcode:
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 ganze klappt natürlich auch
Jetzt wollte ich das in Delphi nachbauen:
Das Trennen funktioniert so (und das ohne Probleme):
Delphi-Quellcode:
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;
Das Verbinden geschieht über:
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