Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
Lizard   (2002-07-02 11:41) [0]

Не могу понять, почему не работает этот пример ?
Помогите, please.

Procedure WipeFile(FileName:String);
Var ff:File;
Begin
AssignFile(ff, FileName);
ReWrite(ff);
CloseFile(ff);
Erase(ff);
End;

var F: TSearchRec;
begin
if FindFirst("E:\1111\*.*", faAnyFile, F)=0 then
Begin
WipeFile("e:\1111\"+F.Name);
while FindNext(F) = 0 do WipeFile("e:\1111\"+F.Name);
End;
FindClose(F);
end.

Заранее благодарен.
Special thanks to Mr. Song.


 
Volj   (2002-07-02 12:22) [1]

Procedure WipeFile(FileName:String);
Var ff:THandle;
Begin
FF := CreateFile(FileName, MAXIMUM_ALLOWED, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL and FILE_FLAG_NO_BUFFERING, 0);
CloseHandle(FF);
DeleteFile(FileName);
End;

Процедура вначале создает поверх существуюего пустой файл, а затем его удаляет. В этом случае при восстановлении файла восстановится файл с нулевой длиной. А обходить всякие приблуды типа Norton Recycle Bin и ему подобные хуки, мне кажется, незачем.


 
Lizard   (2002-07-02 22:37) [2]

Компилятор говорит:"Не буду компилировать вместе Pchar и string "


 
NailMan   (2002-07-03 03:25) [3]

Volj>FF := CreateFile(FileName...тря-ля-ля

Правильно не будет потому что FileName - String
правильнее будет:

FF := CreateFile(pchar(FileName)...тря-ля-ля


А что тебе надо невосстановленным иметь? Инфу или файл?

Если для совсем полной потери инфы - ну например чтобы ФАПСИ или родственные службы не прочатали содержимое, то надо весь раздел
(например D:\) забить мусором предварительно удалив все файлы, папки и прочую тряхомудию. Тоесть посоздавать n файлов по Nметрабайт с рандомными именами. Гарантия полная.
Я такую прогу делал - предыдущаа инфа восстановлению не подлежит.

Если только файл. Ну тогда предыдущий код.


 
Lizard   (2002-07-04 19:50) [4]

Я удалил файлы с помощью этого примера, но доблестный
Norton Unerase все восстановил по первому классу, так
что не работает пока эта фича.
Что касается вопроса NailMan"а, то мне нужно именно уничтожение
информации без возможности восстановления.
Мне нужна именно такая программа, которую Вы написали ранее.
Здесь Вы попали в точку.
Можно, please, посмотреть ее исходничок (хоть одним глазком) ?

Спасибо!


 
Viewer   (2002-07-04 20:19) [5]

Для превращения файла в нечитаемый мусор так и надо сделать:
Открыть его на запись.
Записать в него случайный мусор
Закрыть
Удалить.


 
Lizard   (2002-07-04 21:22) [6]

Как это выполнить технически, т.е. программно ?
Приведите, пожалуйста, пример исходя из вышенаписанного, т.е.
заставьте этот пример заработать так, чтобы никакая падла
вроде Unerase не смогла его восстановить.
Спасибо.


 
Viewer   (2002-07-04 21:50) [7]

Лови

function ShredFile_(const FileName: string; Times: Integer): boolean;
const
BUFSIZE = 4096;
var
Fs: TFileStream;
Size: Integer;
N: Integer;
ContentPtr: Pointer;
begin
Result := False;
Size := GetFileSize_(FileName);
if Size > 0 then
begin
if Times < 0 then
Times := 1;
ContentPtr := nil;
Fs := TFileStream.Create(FileName, fmOpenReadWrite);
try
GetAndFillMem_(ContentPtr, BUFSIZE, Ord("*")); // заполним звездами
while Times > 0 do
begin
Fs.Seek(0, soFromBeginning);
N := Size div BUFSIZE;
while N > 0 do
begin
Fs.Write(ContentPtr^, BUFSIZE);
Dec(N);
end;
N := Size mod BUFSIZE;
if N > 0 then
Fs.Write(ContentPtr^, N);
FlushFileBuffers(Fs.Handle);
Dec(Times);
end;
finally
if ContentPtr <> nil then
FreeMem(ContentPtr, Size);
Fs.Free;
Result := SysUtils.DeleteFile(PChar(FileName));
end;
end
else
Result := SysUtils.DeleteFile(PChar(FileName));
end;


 
NailMan   (2002-07-05 02:25) [8]

А вы о предыдущих версиях(тоесть инфы не подумали)?
Если удалять надо документы како-нить фирмы, то на финте в фрагментированном или нет виде их полно(Быкапы там всякие).

Поэтому для полной гарантии сноса всей инфи ТРЕБУЮТСЯ:
- раздел около 500 Мб, на котором будут храниться тольлько VIP доки.
- программа, которая рекурсивным способом пробегает по всему разделу(по вложенным папкам конесно) и затирает(тоесть открыл-реврайтнул-закрыл-удалил), и затирает папку если в ней нихрена не осталось. А потом прога должна создать N файлов по M мегабайт(я лично делал по 4Мб) с рандомными именами и наполнением(у меня было число "FILE" или "FUCK").

Только так можно гарантировать полную деструкцию.
А почему 500 мег на раздел? Да скорость, скорость винта на процесс влияет. Поэтому есди винт типа 7200-10000 оборотов то можно и гег делать.

Lizard> Можно, please, посмотреть ее исходничок (хоть одним Lizard>глазком) ?
Померли они вместе с винтом год назад, хотя могу поискать, может где завалялись. Вообще прога до безумия простая. Главное в ней это рекурсивная процедура сканирования папок(Надо знать индентификатор папки со всеми вариациями аттрибутов) и не забывать снимать аттрибуты с файлов.

Поищи где-нить алгоритм такой процедуры и сам все поймеш как делать.


 
NailMan   (2002-07-05 05:34) [9]

To Lizard> Проверь мыло я закинул исходник, только
там немного неточно выразился:

софтинку которая прилагается: CHECKD <имя файла куда скидываются аттрибуты всех файлов, папок, лейблов>



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
3-50611
_reset
2002-08-26 10:10
2002.09.16
Cвязанные таблицы (не могу разобраться)...


1-50829
Канадин Владимир
2002-09-03 13:20
2002.09.16
Поднять MDI окно


1-50729
BillyJeans
2002-09-02 16:44
2002.09.16
Как изменить рисунок фона на форме?


14-50981
France
2002-08-22 14:50
2002.09.16
ShowMessage или MessageDlg без uses Dialog


8-50879
Ваня
2002-05-06 18:30
2002.09.16
Звук





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский