Mir ist heute erst nach Jahren aufgefallen, dass eine Datei nicht gelöscht wird, wenn ein Pfad übergeben wird der so aussieht. Das Laufwerk ist ein Netzlaufwerk
Funktioniert >
\\nas\d1\Sub4\File1.txt
Funktioniert nicht >
\\?\UNC\nas\d1\Sub4\File1.txt
Braucht man dieses \\?\
UNC Präfix heute überhaupt noch für
UNC-Pfade? Oder anders gefragt: ist das Präfix was ich da im zweiten Beispiel habe überhaupt richtig? Das ist ja der TPathPrefixType "pptExtendedUNC".
Ich "lösche" solche Dateien, wenns kein Netzlaufwerk ist, in den Papierkorb mit dieser Funktion.
\\: funktioniert
pptExtended, \\?\: funktioniert nicht
pptExtendedUNC, \\?\
UNC\: funktioniert nicht
Delphi-Quellcode:
function RecycleFile(sTmp: string): Boolean;
var
SHFileOpStruct: TSHFileOpStruct;
begin
SHFileOpStruct.Wnd := 0;
SHFileOpStruct.wFunc := FO_DELETE;
SHFileOpStruct.pFrom := PChar(sTmp + #0 + #0);
SHFileOpStruct.pTo := nil;
SHFileOpStruct.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI;
SHFileOpStruct.hNameMappings := nil;
SHFileOpStruct.lpszProgressTitle := nil;
Result := SHFileOperation(SHFileOpStruct) = 0;
end;