AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) GetFinalPathNameByHandle bei Netzlaufwerken?
Thema durchsuchen
Ansicht
Themen-Optionen

GetFinalPathNameByHandle bei Netzlaufwerken?

Ein Thema von MicMic · begonnen am 15. Feb 2021 · letzter Beitrag vom 21. Feb 2021
Antwort Antwort
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

GetFinalPathNameByHandle bei Netzlaufwerken?

  Alt 15. Feb 2021, 20:56
Hallo,
ich finde leider noch keine Lösung.
Ich nutze "GetFinalPathNameByHandle" damit ich die Symlinks folgen kann (wenn vorhanden). Also z.B. "C:\Dokumente und Einstellungen" zu "C:\Users". Das funktioniert auch alles soweit sehr gut. Wenn es halt kein SymLink ist, bleibt der Pfad wie er ist. Habe ich aber ein Netzlaufwerk (z.B. Laufwerk Z), dann bekomme ich von der Funktion nicht die Laufwerks-Pfade (Z:\Ordner1 oder Z:\Ordner2), sondern die eigentliche Quelle (\\Servername\Freigabename\Ordner1 oder \\Servername\Freigabename\Ordner1) zurück. Ich will schon SymLinks auf Netzwerklaufwerken folgen können (wenn vorhanden) aber möchte doch gerne dann bei dem Laufwerksbuchstabe Z bleiben.

Gibt es da ein Trick oder dazugehörige Funktionen?

Gruß Mike
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: GetFinalPathNameByHandle bei Netzlaufwerken?

  Alt 15. Feb 2021, 21:12
Mir fällt selbst nur ein den Teil "\\Servername\Freigabename\" wieder durch "Z:" zu ersetzen. Also Copy/Pos/Delete Zeugs. Aber vielleicht gibt es elegantere Lösungen/Funktionen?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: GetFinalPathNameByHandle bei Netzlaufwerken?

  Alt 20. Feb 2021, 00:05
Erziehlst du hiermit das gleiche Ergebnis?

Delphi-Quellcode:
function GetSymTarget(const SymLink: string): string;
var
  LinkHandle: THandle;
  TargetName: array [0..512] of Char;
begin
  Result := '';
  LinkHandle := CreateFile(PChar(SymLink), 0, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
  Win32Check(LinkHandle <> INVALID_HANDLE_VALUE);
  try
    if GetFinalPathNameByHandle(LinkHandle, TargetName, 512, FILE_NAME_NORMALIZED) > 0 then
      Result := string(TargetName);
      else
      RaiseLastOSError;
  finally
    CloseHandle(LinkHandle);
  end;
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: GetFinalPathNameByHandle bei Netzlaufwerken?

  Alt 20. Feb 2021, 10:56
Mir fällt selbst nur ein den Teil "\\Servername\Freigabename\" wieder durch "Z:" zu ersetzen. Also Copy/Pos/Delete Zeugs. Aber vielleicht gibt es elegantere Lösungen/Funktionen?
Ich habe den Code da oben nicht getestet. Aber wenn man "Servername" hat, kann man einfach alle Laufwerke durchlaufen und den Namen vergleichen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: GetFinalPathNameByHandle bei Netzlaufwerken?

  Alt 21. Feb 2021, 00:05
Mir fällt selbst nur ein den Teil "\\Servername\Freigabename\" wieder durch "Z:" zu ersetzen. Also Copy/Pos/Delete Zeugs. Aber vielleicht gibt es elegantere Lösungen/Funktionen?
Ich habe den Code da oben nicht getestet. Aber wenn man "Servername" hat, kann man einfach alle Laufwerke durchlaufen und den Namen vergleichen.
"Einfach" ist relativ
Die meisten fremdlaufwerke bei uns wollen ja mit einem usernamen und passwort beglückt werden, was eine automatisierung kaum zulässt. Ich hoffe hier auch auf hilfe zu diesem Thema zu stoßen.
Gruß vom KodeZwerg
  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 08:33 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