Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Zugriff auf Netzwerkpfad per User-Anmeldung (https://www.delphipraxis.net/211473-zugriff-auf-netzwerkpfad-per-user-anmeldung.html)

Harry Stahl 20. Sep 2022 20:47

Zugriff auf Netzwerkpfad per User-Anmeldung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich im Programmablauf im Netzwerk auf z.B. "\\EW4\D" zugreifen will (also das Laufwerk D, dass dort freigegeben ist), passiert nichts, wenn man noch nicht die Anmeldeinformationen eingegeben hat.

(siehe anliegenden Screenshot)

Wenn ich den Pfad im Windows-Explorer eingebe, popt das gezeigte Fenster automatisch auf.

Wie kann ich das selber programmgesteuert erreichen und wie merke ich, wann das notwendig ist (im Vergleich etwa zu einem ungültigen eingegebenen Pfad)?

Uwe Raabe 20. Sep 2022 22:06

AW: Zugriff auf Netzwerkpfad per User-Anmeldung
 
Das könnte mit WNetUseConnection und dem Flag CONNECT_INTERACTIVE funktionieren. Das sollte fragen, wenn die Default-Werte keinen Zugriff erlauben.

Harry Stahl 21. Sep 2022 20:33

AW: Zugriff auf Netzwerkpfad per User-Anmeldung
 
Danke Uwe, das waren die richtigen Stichworte.

Hab es jetzt so gelöst:

Delphi-Quellcode:
function ConnectWithNetPath (netpath: string): boolean;
var
  BufferSize, ResultFlag: DWORD; NetResource: TNetResource;
begin
  Result := True;

  if not directoryexists (netpath) then begin
    NetResource.dwType := RESOURCETYPE_DISK;
    NetResource.lpLocalName := nil;
    NetResource.lpRemoteName := PChar (netpath);
    NetResource.lpProvider := nil;

    Result := WNetUseConnection(Application.MainForm.handle, NetResource, nil, nil, CONNECT_INTERACTIVE or
      CONNECT_PROMPT, nil, BufferSize, ResultFlag) = NO_ERROR;
  end;

end;

procedure TForm23.bnConncetClick(Sender: TObject);
begin
  if ConnectWithNetPath (edNetpath.Text) then begin
    // do whatever needed
  end;
end;
Zwar muss ich einige Sekunden warten, bis "DirectoryExists" aufgibt, aber das ist Ok.

Uwe Raabe 21. Sep 2022 21:35

AW: Zugriff auf Netzwerkpfad per User-Anmeldung
 
Wenn du das CONNECT_PROMPT weglässt, dann kommt die Abfrage nur wenn notwendig. Dann solltest du dir das DirectoryExists sparen können.

himitsu 21. Sep 2022 21:50

AW: Zugriff auf Netzwerkpfad per User-Anmeldung
 
Warum überaupt erst das DirExists? [edit] (und warum war Uwe grade eben noch nicht zu sehn?) [/edit]

Mach einfach direkt ein WNetUseConnection und wenn da ERROR_ALREADY_ASSIGNED zurück kommt, dann existierte es bereits :stupid:

Harry Stahl 21. Sep 2022 23:25

AW: Zugriff auf Netzwerkpfad per User-Anmeldung
 
OK, danke für die Hinweis, dann werde ich das noch etwas optimieren...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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