Einzelnen Beitrag anzeigen

H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

Probleme Netzwerk-Login

  Alt 30. Mai 2016, 10:50
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
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat