Einzelnen Beitrag anzeigen

Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#18

AW: DeleteFile und die Datei ist immer noch da

  Alt 22. Sep 2016, 17:25
Zacherl hat schon recht. Ich würde auch auf ein offenes Handle tippen.

Erst wenn ich das Programm schließe verschwindet die Datei.
Was komisch ist DeleteFile('name') gibt True zurück und TFileStream.Create('name', fmCreate) meldet kein Fehler.
Schonmal im Process Explorer oder gar mit ProcMon nachgeschaut? Da schwirrt mit ziemlicher Sicherheit noch irgendwo ein Handle auf die Datei rum. Ich behaupte ja nicht, daß es in deinem Prozeß ist, aber der Process Explorer könnte dies ohne weiteres aufdecken, so oder so.

Normalerweise ist das vermeintliche sofortige Löschen einer Datei ja erstmal nichts anders als das Setzen von DeleteFile in MSDN-Library durchsuchenFILE_DISPOSITION_INFORMATION mittels MSDN-Library durchsuchenZwSetInformationFile(hFile, ..., FileDispositionInformation, ...). Die Datei wird also zum Löschen vorgemerkt.

Und du darfst dir die Win32-API MSDN-Library durchsuchenDeleteFile als Hülle für den oben genannten Mechanismus vorstellen. Wenn du also eine Datei zum Löschen markierst, wird diese weiterexistieren, bis das letzte Handle weg ist:

Zitat:
A file marked for deletion is not actually deleted until all open handles for the file object have been closed and the link count for the file is zero.
Auf unixartigen Systemen ist dies übrigens ganz ähnlich, auch wenn die Datei aus dem Ursprungsverzeichnis sofort verschwindet. Mithilfe des /proc-Dateisystems kann man die Datei "wiederherstellen" indem man sie aus /proc wieder "herauskopiert", siehe hier.

Wenn das Programm läuft kann ich nicht diese Datei öffnen, sogar als Administrator komme ich nicht in den Eigenschaften an die Security ran...
Ich empfehle die Lektüre von MSDN-Library durchsuchenCreateFile und dort im Besonderen von dwShareMode

Übrigens könntest du als Admin mit dem aktivierten Backupprivileg doch Glück haben. Aber ist nur so eine Idee, hab's nicht getestet.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat