AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme Netzwerk-Login

Ein Thema von H.Bothur · begonnen am 30. Mai 2016 · letzter Beitrag vom 31. Mai 2016
Antwort Antwort
H.Bothur

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

Probleme Netzwerk-Login

  Alt 30. Mai 2016, 11: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
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 11:59
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.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 13:33
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 13:39
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:
The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. It can be cast only to an int and compared to either 32 or the following error codes below.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 19:45
Code:
net use /delete
akzeptiert Wildcards? Das ist mir neu.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (31. Mai 2016 um 02:03 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 19:54
Hallo,
ich habe mir angewöhnt, eine Batch-Datei zu erzeugen
und diese per (wie oben gezeigt) ShellExecute cmd /C auszuführen.


Heiko
Heiko
  Mit Zitat antworten Zitat
H.Bothur

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

AW: Probleme Netzwerk-Login

  Alt 30. Mai 2016, 21:06
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

Vielen Dank für die Ideen

HAns
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#8

AW: Probleme Netzwerk-Login

  Alt 31. Mai 2016, 05:13
Hmm..

Oder Du machst es ganz ohne ShellExecute und Batch mit


WNetEnumResource
WNetAddConnection2
WNetCancelConnection2

Damit geht es über eine Windows-API.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Probleme Netzwerk-Login

  Alt 31. Mai 2016, 08:46
Delphi-Quellcode:
    procedure NetzwerkLaufwerkeTrennen;
         Ergebnis := ShellExecute(0, nil, PChar('net'), PChar('use * /delete /yes'), nil, SW_SHOW);
Vieleicht besser 'net use * /delete /yes'.
Und ist ShellExecute nebenläufig oder nicht?
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz