Win32 Dateiberechtigungen teilen Verletzung während eine temporäre Datei zu löschen
-
07-07-2019 - |
Frage
Ich habe eine Anwendung, wo ich versuche, eine „sichere Datei überschreiben“ durch zu implementieren:
- Erstellen einer Datei (
A
) - Füllen
A
mit Daten - Kopieren
A
zu ihrem endgültigen Bestimmungsort (B
) überSHFileOperation
- Löschen
A
mitDeleteFile
jedoch in Schritt 4 DeleteFile
immer wieder ERROR_SHARING_VIOLATION. Der gesamte Prozess dauert Millisekunden, so kann ich mir nicht vorstellen, wer sonst noch mit meiner Datei würde stören. Ein paar Fragen:
- Gibt es eine bessere Win32 (C / C ++) Technik zur Durchführung des oben?
- Wie kann ich mehr Informationen über die „anderen Verfahren“ erhalten, die mich zu halten ist aus der Datei
A
zu löschen? - Wie kann ich sanft ( wink wink nudge nudge ) Windows zwingen meine temporäre Datei löschen?
Alle anderen Vorschläge sind willkommen
Lösung
Meine beste Vermutung wäre, dass Sie einen Schritt 2.5) müssen die Datei-Handle schließt in 1 erstellt)
Was Sie die Datei / Öffnen verwenden?
Wenn Sie Createfile verwenden dann stellen Sie sicher, dass Sie Ihre Datei-Handle vor dem Aufruf schließen zu löschen, oder stellen Sie sicher, die gemeinsame Nutzung Flagge FILE_SHARE_DELETE
angeben.
HANDLE hFile = CreateFile("C:\\test.txt", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, CREATE_ALWAYS, 0, NULL);
Sie möchten vielleicht auch Ihre Kopieren von Dateicode vereinfachen, indem die Win32-API Copyfile .
Andere Tipps