Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi MapUNCPathToDrivePath (https://www.delphipraxis.net/212404-mapuncpathtodrivepath.html)

PeterPanino 6. Feb 2023 11:29

MapUNCPathToDrivePath
 
Ich habe mir eine Funktion geschrieben, die einen UNC-Pfad (beginnt mit "\\") in den zugehörigen Drive-Path (startet z.B. mit "C:\") konvertieren soll:

Delphi-Quellcode:
function MapUNCPathToDrivePath(UNCPath: string): string;
var
  DrivePath: array[0..MAX_PATH] of Char;
  BufferSize: DWORD;
  Error: DWORD;
begin
  BufferSize := SizeOf(DrivePath);
  Error := Winapi.Windows.WNetGetUniversalName(PChar(UNCPath), UNIVERSAL_NAME_INFO_LEVEL, @DrivePath[0], BufferSize);
  if Error = NO_ERROR then
  begin
    Result := DrivePath;
    CodeSite.Send('MapUNCPathToDrivePath: NO_ERROR');
  end
  else
  begin
    Result := '';
    CodeSite.Send('MapUNCPathToDrivePath: ERROR', Error);
  end;
end;
Auf meinem Test-System ist "\\Mac\Home" äquivalent zu "Y:\". Beides wird im Windows File Explorer äquivalent angezeigt.

Aber diese Funktion gibt einen Leerstring und den Fehlercode 1200 zurück:

Delphi-Quellcode:
MapUNCPathToDrivePath('\\Mac\Home');

Kann das jemand auf seinem System testen?

himitsu 6. Feb 2023 12:26

AW: MapUNCPathToDrivePath
 
1200 sagt natürlich genau aus, was damit gemeint ist, bzw. wir kennen atürlich alle paar Millionen Codes auswendig. :stupid:

Zitat:

Zitat von GetLastError
ERROR_BAD_DEVICE

1200 (0x4B0)

The specified device name is invalid.

Zitat:

Zitat von WNetGetUniversalName: Return value
ERROR_BAD_DEVICE The string pointed to by the lpLocalPath parameter is invalid.

...

Delphi-Quellcode:
CodeSite.SendError('MapUNCPathToDrivePath: ERROR %d = %s', [Error, SysErrorMessage(Error)]);


Tja, es scheint keine unterschiedlichen Fehler für "ungültige Syntax" und "das gibt's hier nicht" zu geben. :cry:

* du hast dich doch verschrieben
* der Computer (Mac) konnte nicht aufgelöst/gefunden werden
* der Share "Home" konnte nicht gefunden werden
* oder kein Zugriff auf Eines von Beiden (falsche/fehlende Logindaten)

PeterPanino 6. Feb 2023 12:37

AW: MapUNCPathToDrivePath
 
Wie ich schrieb, wird der Pfad "\\Mac\Home" sowie sein Äquivalent im Windows File Explorer problemlos angezeigt. Was ist an der obigen Funktion dann falsch?

shebang 6. Feb 2023 12:45

AW: MapUNCPathToDrivePath
 
Zitat:

Zitat von PeterPanino (Beitrag 1518350)
Was ist an der obigen Funktion dann falsch?

Wenn ich die Doku von WNetGetUniversalNameA richtig lese, dann kann die Funktion einen DrivePath in einen UNCPath umwandeln, aber nicht umgekehrt.
Zitat:

Zitat von WNetGetUniversalNameA
[in] lpLocalPath

A pointer to a constant null-terminated string that is a drive-based path for a network resource.


himitsu 6. Feb 2023 12:58

AW: MapUNCPathToDrivePath
 
Sollte passen.

LongStrings in Delphi sind aus Kompatibilitätsgründen "standardmßig" doppelt null-terminiert. (falls kein Bufferoverrun und Dergleichen)
"Constant" kommt auch hin, da sich der String während des Aufrufs nicht ändert.

Aber stimmt, "drive-based" klingt danach, als wenn es andersrum ist,
aber es kann auch ein "univeral name" rein gehn.

PeterPanino 6. Feb 2023 13:15

AW: MapUNCPathToDrivePath
 
Danke für die Information. Weiß jemand, wie ich den umgekehrten Weg gehen kann - also UNCPath in den zugehörigen DrivePath umwandeln?

KodeZwerg 6. Feb 2023 13:20

AW: MapUNCPathToDrivePath
 
Mir fällt nur "HKEY_CURRENT_USER\Network" dazu ein. Darüber iterieren bis ein Treffer zum UNC passt.

PeterPanino 6. Feb 2023 13:37

AW: MapUNCPathToDrivePath
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von KodeZwerg (Beitrag 1518356)
Mir fällt nur "HKEY_CURRENT_USER\Network" dazu ein. Darüber iterieren bis ein Treffer zum UNC passt.

Dort sind bei mir leider keine UNC-Pfade:
Anhang 55804

KodeZwerg 6. Feb 2023 14:18

AW: MapUNCPathToDrivePath
 
Komisch, eigentlich solltest Du mit Deiner obigen Angabe "HKEY_CURRENT_USER\Network\Y" ein Auflistung von "Y" erhalten, in diesem wiederum ist dann ein "RemotePath".
Abgesehen das Dein Bild lustige Vierecke hat, ist nichts ersichtlich ob Du da überhaupt richtig bist.

PeterPanino 6. Feb 2023 15:48

AW: MapUNCPathToDrivePath
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von KodeZwerg (Beitrag 1518359)
Komisch, eigentlich solltest Du mit Deiner obigen Angabe "HKEY_CURRENT_USER\Network\Y" ein Auflistung von "Y" erhalten, in diesem wiederum ist dann ein "RemotePath".
Abgesehen das Dein Bild lustige Vierecke hat, ist nichts ersichtlich ob Du da überhaupt richtig bist.

Hier ist das Bild vergrößert als Beweis:
Anhang 55805

Die "lustigen Vierecke" sind Verpixelungen. Könntest du einen Screenshot von deinem Network-Ordner posten? Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr.
Seite 1 von 2  1 2      

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