Здравствуйте!
Подскажите, пожалуйста, как можно удалить папку с файлами на жестком диске средствами VB без возможности последующего их восстановления?
Спасибо.
Dim fso As New FileSystemObject
fso.DeleteFolder "c:\ddd"
tyomitch писал(а):Rainbow, я думаю, Alexxx не про "удалить мимо корзины", а про "удалить и затереть" - "просто удалённое" на FAT32 диске воcстанавливается довольно легко...
Номера ворованных кредиток прятать от КГБRainbow писал(а):tyomitch писал(а):Rainbow, я думаю, Alexxx не про "удалить мимо корзины", а про "удалить и затереть" - "просто удалённое" на FAT32 диске воcстанавливается довольно легко...
Ой, а зачем такое варварство?
Private FSO as Object
Option Explicit
Set FSO=CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "C:\MyFolder",True
RayShade писал(а):Зачем изобретать велосипед? есть куча тулзин типа того же WipeInfo. И вперед с песнями.
Alexxx писал(а):Так все-таки, есть возможность программного удаления папки с файлами БЕЗ возможности восстановления? Дважды записывать файл с другим содержанием - это выверт довольно хитрый, но не экономный. Кроме того, речь идет об удалении целой папки, в которой находится масса файлов.
И попутный вопрос: у меня почему-то команда fso.DeleteFolder "е:\namefolder" отказывается удалять папку. Что - сначала надо удалить все файлы этой папки, и только потом саму папку?
Так все-таки, есть возможность программного удаления папки с файлами БЕЗ возможности восстановления? Дважды записывать файл с другим содержанием - это выверт довольно хитрый, но не экономный. Кроме того, речь идет об удалении целой папки, в которой находится масса файлов.
Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hfile As Long) As Long
Private Sub ShredFile(sFileName As String)
On Error GoTo ErrSub
Dim i As Long, x As Long
Open sFileName For Binary As #1
For x = 1 To 1000
For i = 1 To LOF(1)
Put #1, i, RandomChar(1)
FlushFileBuffers (1)
Next i
Next x
Close #1
Kill sFileName
ErrSub:
If Err.Number = 0 Then
If Err.Number = 9 Then
Resume Next
If Err.Number = 55 Then
Close #1
Else
MsgBox (Err.Number & vbCrLf & Err.Description), vbCritical + vbOKOnly, "Error"
End If
End If
End If
End Sub
Private Function RandomChar(Length As Long) As String
Dim Position As Long, StringLen As Long
Dim rndString As String, Chars As String
StringLen = 0
Randomize
Do Until StringLen = Length
Position = Int((Len(Chars) * Rnd) + 1)
rndString = rndString & Mid$(Chars, Position, 1)
StringLen = StringLen + 1
Loop
RandomChar = rndString
End Function
Samovar писал(а):А вообще, в Win2000,XP и т.д. можно включить режим Secure Delete. Это не подойдет?
Сейчас этот форум просматривают: AhrefsBot, PetalBot и гости: 1