Ich würde für die Funktion eher folgenden Code verwenden:
Delphi-Quellcode:
function GetNetworkDriveUNC(const aDriveletter: string): String;
var
nLen: cardinal;
sBuff: PChar;
nResult: DWORD;
begin
nLen := 0;
ZeroMemory(@sBuff, SizeOf(PChar));
nResult := WNetGetConnection(PChar(aDriveletter), sBuff, nLen);
if (nResult = ERROR_MORE_DATA) then
begin
GetMem(sBuff, nLen);
nResult := WNetGetConnection(PChar(aDriveletter), sBuff, nLen);
if (nResult = NO_ERROR) or (nResult = ERROR_CONNECTION_UNAVAIL) then
begin
SetString(Result, sBuff, nLen);
Delete(Result, Pos(#0, Result), 1);
end;
FreeMem(sBuff);
end;
end;
Der Code hat im wesentlichen zwei Vorteile:
1. Wenn ein Laufwerk zwar gemapt, aber nicht bereit ist, wird trotzdem der
UNC-Pfad ermittelt.
2. Der überflüssige #0 wird nicht zurück gegeben.