Datei nach dem Neustart löschen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Dieser Artikel zeigt, wie Sie eine Datei nach einem Neustart löschen können. Dies kann erforderlich sein, wenn Sie Dateien löschen möchten, die gerade in Benutzung sind (z.B. kann sich auf diese Weise ein Programm selbst löschen).
Die Vorgehensweise unterscheidet sich bei W9x/ME und NT/2k/XP. Wird die Win9x-Serie benutzt, muss man einen Eintrag "NUL=Dateiname" unter dem Abschnitt "[Rename]" in der "WINDIR\wininit.ini" hinzufügen. Bei der NT-Linie reicht es, die API "MoveFileEx" mit einem entsprechenden Parameter aufzurufen.
Folgende Prozedur kaspelt den Aufruf und unterscheidet auch zwischen den Betriebssystemen:
var
Section: string;
WinDir, WinInit: string;
begin
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
begin
SetLength(WinDir, MAX_PATH);
SetLength(WinDir, GetWindowsDirectory(PChar(WinDir), MAX_PATH));
WinInit := WinDir + '\WININIT.INI';
SetLength(Section, MAXSHORT); // Win9x Beschränkung
SetLength(Section, GetPrivateProfileSection('Rename', PChar(Section),
Length(Section), PChar(WinInit)));
Section := Section + 'NUL=' + Filename + #0;
WritePrivateProfileSection('Rename', PChar(Section), PChar(WinInit));
end
else
MoveFileEx(PChar(Filename), nil, MOVEFILE_DELAY_UNTIL_REBOOT);
end;
Achten Sie darauf, als Dateinamen den kompletten Dateinamen (inkl. Pfad!) zu übergeben! Es können auch leere Verzeichnisse gelöscht werden. Befinden sich noch Dateien in den Verzeichnissen müssen sie zuvor über wiederholte Aufrufe der Prozedur DeleteFileOnReboot entfernt werden. Windows löscht die Dateien in der Reihenfolge, wie sie vom Programmierer angegeben wurden.
Weitere Informationen zu diesem Vorgehen finden Sie in der PSDK unter dem Stichwort "MoveFileEx".
- Dateien und Verzeichnisse löschen
- Datei mit zugeordneter Anwendung öffnen
- Programm ohne sichtbares Fenster starten
- Größe einer Datei ermitteln
- Feststellen, ob eine Datei existiert
- Erstellungsdatum von Dateien ermitteln
- Letzten Dateizugriff ermitteln
- Ist eine Datei in Benutzung
- Dateiversion ermitteln
- Datei nach einem bestimmten String durchsuchen