Win32 Dateiberechtigungen teilen Verletzung während eine temporäre Datei zu löschen

StackOverflow https://stackoverflow.com/questions/1424579

  •  07-07-2019
  •  | 
  •  

Frage

Ich habe eine Anwendung, wo ich versuche, eine „sichere Datei überschreiben“ durch zu implementieren:

  1. Erstellen einer Datei (A)
  2. Füllen A mit Daten
  3. Kopieren A zu ihrem endgültigen Bestimmungsort (B) über SHFileOperation
  4. Löschen A mit DeleteFile

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:

  1. Gibt es eine bessere Win32 (C / C ++) Technik zur Durchführung des oben?
  2. Wie kann ich mehr Informationen über die „anderen Verfahren“ erhalten, die mich zu halten ist aus der Datei A zu löschen?
  3. Wie kann ich sanft ( wink wink nudge nudge ) Windows zwingen meine temporäre Datei löschen?

Alle anderen Vorschläge sind willkommen

War es hilfreich?

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 .

scroll top