vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB618.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 OtterBewertung:  Views:  22.856 
www.tools4vb.deSystem:  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!
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.