Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB4, VB5, VB6 | 18.11.01 |
Datei sicher löschen Ein kleiner Trick - und eine mit dem Kill-Befehl gelöschte Datei lässt sich auch mit entsprechenden Tools nicht wieder herstellen. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.856 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wie löscht man eine Datei?
Einfach. Mit dem Kill-Befehl von Visual Basic.
Eine auf diese Weise gelöscht Datei lässt sich aber i.a.R. mit entsprechenden Undelete-Tools wiederherstellen.
Was aber, wenn man eine Datei dauerhaft löschen will? D.h. eine Wiederherstellung soll nicht wieder möglich sein? Und das ganze natürlich aus der VB-Anwendung heraus, ohne irgend ein externes Tool einsetzen zu müssen.
Ein kleiner Trick - und eine mit dem Kill-Befehl gelöschte Datei lässt sich nicht wiederherstellen.
Und so geht's:
Bevor wir die entsprechende Datei "killen", überschreiben wir deren Inhalt mit Leerzeichen. Danach wird die Datei gelöscht, und sollte diese mit einem Undelete-Tool wiederhergestellt werden, befinden sich nur noch Leerzeichen darin
Und hier der Code
Public Function FileKill(ByVal sFilename As String) _ As Boolean Dim F As Integer Dim sInhalt As String Dim FileSize As Long Dim ReadSize As Long Dim Size As Long Const BlockSize = 4096 ' Fehlerbehandlung aktivieren On Local Error Goto FileKill_Error ' Datei binär öffnen F = FreeFile Open sFilename For Binary As #F ' Dateigröße FileSize = Lof(F) ' Datei-Inhalt blockweise mit ' Leerzeichen überschreiben While ReadSize < FileSize If ReadSize + BlockSize > FileSize Then Size = FileSize - ReadSize Else Size = BlockSize End If ' Leerzeichen schreiben sInhalt = Space$(Size) Put #F, , sInhalt ReadSize = ReadSize + Size Wend ' Datei schliessen Close #F ' Datei löschen Kill sFilename FileKill = True Exit Function FileKill_Error: If F > 0 Then Close #F FileKill = False End Function
Ab sofort rufen Sie nicht mehr Kill Dateiname, sondern FileKill Dateiname auf - zumindest immer dann, wenn die Datei wirklich sicher gelöscht werden muss!