Как удалить папку с файлами без их восстановления?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexxx
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.09.2004 (Сб) 12:58

Как удалить папку с файлами без их восстановления?

Сообщение Alexxx » 29.09.2004 (Ср) 10:31

Здравствуйте!
Подскажите, пожалуйста, как можно удалить папку с файлами на жестком диске средствами VB без возможности последующего их восстановления?
Спасибо.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 29.09.2004 (Ср) 11:10

Используй FSO (по этому слову на форуме найдешь кучу тем)

Подключи Microsoft Scripting Runtime
Код: Выделить всё
Dim fso As New FileSystemObject
fso.DeleteFolder "c:\ddd"


Если укажешь вторым параметром в DeleteFolder True, то удалит даже Read-Only.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.09.2004 (Ср) 11:17

Ой. :roll:
Наверное, очень-очень сложно...

Rainbow, я думаю, Alexxx не про "удалить мимо корзины", а про "удалить и затереть" - "просто удалённое" на FAT32 диске восстанавливается довольно легко...
Изображение

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 29.09.2004 (Ср) 11:17

Открыть каждый файл на запись, заполнить его, допустим, 0, сохранить, а затем убить вместе с папкой. По идее должно сработать.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 29.09.2004 (Ср) 11:31

tyomitch писал(а):Rainbow, я думаю, Alexxx не про "удалить мимо корзины", а про "удалить и затереть" - "просто удалённое" на FAT32 диске воcстанавливается довольно легко...

Ой, а зачем такое варварство? :roll:
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.09.2004 (Ср) 12:01

Rainbow писал(а):
tyomitch писал(а):Rainbow, я думаю, Alexxx не про "удалить мимо корзины", а про "удалить и затереть" - "просто удалённое" на FAT32 диске воcстанавливается довольно легко...

Ой, а зачем такое варварство? :roll:
Номера ворованных кредиток прятать от КГБ ;-)
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.09.2004 (Ср) 12:04

Зачем изобретать велосипед? есть куча тулзин типа того же WipeInfo. И вперед с песнями.
I don't understand. Sorry.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 29.09.2004 (Ср) 20:02

Если использовать VBscript,
Код: Выделить всё
Private FSO as Object
Option Explicit

Set FSO=CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "C:\MyFolder",True

то после удаления в корзине (даже защищённой Нортоном) данную папочку не найти. И через меню проводника "Правка"-"Отменить" тоже не восстанавливается. Ну а остальное, если нужно вообще даже на низком уровне, то как сказал Тёмыч.
Последний раз редактировалось Ruslan Demidow 29.09.2004 (Ср) 20:07, всего редактировалось 1 раз.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.09.2004 (Ср) 20:04

RayShade писал(а):Зачем изобретать велосипед? есть куча тулзин типа того же WipeInfo. И вперед с песнями.

Alexxx-то надо на VB!
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.09.2004 (Чт) 8:55

Open ... For Binary
Put ...
Close
Kill
Lasciate ogni speranza, voi ch'entrate.

Alexxx
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.09.2004 (Сб) 12:58

Сообщение Alexxx » 30.09.2004 (Чт) 9:33

Так все-таки, есть возможность программного удаления папки с файлами БЕЗ возможности восстановления? Дважды записывать файл с другим содержанием - это выверт довольно хитрый, но не экономный. Кроме того, речь идет об удалении целой папки, в которой находится масса файлов.
И попутный вопрос: у меня почему-то команда fso.DeleteFolder "е:\namefolder" отказывается удалять папку. Что - сначала надо удалить все файлы этой папки, и только потом саму папку?

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 30.09.2004 (Чт) 9:54

Alexxx писал(а):Так все-таки, есть возможность программного удаления папки с файлами БЕЗ возможности восстановления? Дважды записывать файл с другим содержанием - это выверт довольно хитрый, но не экономный. Кроме того, речь идет об удалении целой папки, в которой находится масса файлов.
И попутный вопрос: у меня почему-то команда fso.DeleteFolder "е:\namefolder" отказывается удалять папку. Что - сначала надо удалить все файлы этой папки, и только потом саму папку?

fso.DeleteFolder "е:\namefolder", True - удалит.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.09.2004 (Чт) 10:47

Так все-таки, есть возможность программного удаления папки с файлами БЕЗ возможности восстановления? Дважды записывать файл с другим содержанием - это выверт довольно хитрый, но не экономный. Кроме того, речь идет об удалении целой папки, в которой находится масса файлов.

имхо - так все программы для безвозвратного удаления данных делают, так что велосипед тут не изобрести...

Alexxx
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.09.2004 (Сб) 12:58

Сообщение Alexxx » 30.09.2004 (Чт) 11:13

Спасибо всем за советы, но чувство какой-то незавершенности поставленной задачи осталось...

Prickly
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 07.10.2004 (Чт) 18:44
Откуда: From Russia

Как удалить папку с файлами без их восстановления?

Сообщение Prickly » 07.10.2004 (Чт) 22:13

Используй вот этот код

Код: Выделить всё
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
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Сообщение Samovar » 07.10.2004 (Чт) 23:06

Если открыть файл Binary и потом писать туда, это гарантирует что новые записи стерут старые? Или NTFS (для большей надежности) просто откроет новый сектор запишет все новое туда и потом освободит старый сектор.

А вообще, в Win2000,XP и т.д. можно включить режим Secure Delete. Это не подойдет?
Ученье - свет, неученых - тьма.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 08.10.2004 (Пт) 8:08

Samovar писал(а):А вообще, в Win2000,XP и т.д. можно включить режим Secure Delete. Это не подойдет?

Нельзя ли поподробнее об этом?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList