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

Вниз

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

 
Lizard   (2002-06-13 21:27) [0]

Как это выполнить программно по принципу Нортоновского
Wipe Info. Чтобы на диск поверх файла записалась всякая лабуда
и первоначальный файл нельзя было восстановить ?

Заранее благодарен.


 
Song   (2002-06-13 21:48) [1]


procedure WipeFile(FileName: string);
var
buffer: array [0..4095] of Byte;
max, n: LongInt;
i: Integer;
fs: TFileStream;

procedure RandomizeBuffer;
var
i: Integer;
begin
for i := Low(buffer) to High(buffer) do
buffer[i] := Random(256);
end;
begin
fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
for i := 1 to 3 do
begin
RandomizeBuffer;
max := fs.Size;
fs.Position := 0;
while max 0 do
begin
if max SizeOf(buffer) then
n := SizeOf(buffer)
else
n := max;
fs.Write(Buffer, n);
max := max - n;
end;
FlushFileBuffers(fs.Handle);
end;
finally
fs.Free;
end;
Deletefile(FileName);
end;


 
Lizard   (2002-06-14 14:11) [2]

Огромное спасибо за ответ, но что-то ничего не выходит.
Очень буду признателен Вам, если отправите рабочий исходник
(если не трудно).

mailto: unks@mail.ru
Best regards, Lizard.


 
Song   (2002-06-14 15:44) [3]


procedure WipeFile(FileName: string);
var
buffer: array [0..4095] of Byte;
max, n: LongInt;
i: Integer;
fs: TFileStream;

procedure RandomizeBuffer;
var
i: Integer;
begin
for i := Low(buffer) to High(buffer) do
buffer[i] := Random(256);
end;
begin
fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
for i := 1 to 3 do
begin
RandomizeBuffer;
max := fs.Size;
fs.Position := 0;
while max > 0 do
begin
if max=SizeOf(buffer) then
n := SizeOf(buffer)
else
n := max;
fs.Write(Buffer, n);
max := max - n;
end;
FlushFileBuffers(fs.Handle);
end;
finally
fs.Free;
end;
Deletefile(FileName);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
WipeFile("C:\1.bat");
end;


 
BJValentine   (2002-06-14 21:32) [4]

Открываешь файл для перезаписи, записываешь пустую строку туда, закрываешь его и удаляешь. Всё! 5-6 строчек.


 
Lizard   (2002-06-14 21:49) [5]

Огромное спасибо за помощь, все получилось.
Приношу извинения, но появился еще один вопрос.
А если необходимо удалить не один, а группу файлов, расположенных
в одной директории, как это будет выглядеть ?
Предложенный мною ниже способ почему-то не работает и выдает
сообщение о выполнении недопустимой ошибки.
Не могли бы Вы подсказать мне, в чем проблема ?
Спасибо.


procedure WipeFile(FileName: string);
var
buffer: array [0..4095] of Byte;
max, n: LongInt;
i: Integer;
fs: TFileStream;

procedure RandomizeBuffer;
var
i: Integer;
begin
for i := Low(buffer) to High(buffer) do
buffer[i] := Random(256);
end;
begin
fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
for i := 1 to 3 do
begin
RandomizeBuffer;
max := fs.Size;
fs.Position := 0;
while max > 0 do
begin
if max=SizeOf(buffer) then
n := SizeOf(buffer)
else
n := max;
fs.Write(Buffer, n);
max := max - n;
end;
FlushFileBuffers(fs.Handle);
end;
finally
fs.Free;
end;
Deletefile(FileName);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
F: TSearchRec;

begin
if FindFirst("C:\Folder\*.*", faAnyFile, F)=0 then
begin
while FindNext(F) = 0 do WipeFile("C:\Folder\"+F.Name);
end;
FindClose(F);

end;



 
Lizard   (2002-06-14 21:54) [6]

To: BJValentine
Такое я пробовал, но wipe info находит оба варианта,
т.е. получаются два файла на диске.


 
Anatoly Podgoretsky   (2002-06-14 22:17) [7]

procedure RandomizeBuffer;
...
RandomizeBuffer;
...

Вот это мне всегда нравится, вспоминаю про попа и его собаку


 
Lizard   (2002-06-15 13:48) [8]

Можно подробнее (для начинающих) ?
Спасибо.


 
Anatoly Podgoretsky   (2002-06-15 14:03) [9]

У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
...


 
vuk   (2002-06-15 15:00) [10]

to Anatoly Podgoretsky:
Там вложенная процедура...


 
~Rand~   (2002-06-16 09:13) [11]

Удалено модератором


 
Anatoly Podgoretsky   (2002-06-16 10:27) [12]

Извиняюсь, так неакуратно написано, а как было красиво :-)


 
Rooman   (2002-06-16 11:10) [13]

Полноценный Wipe должен содержать следующие моменты:

1. Заполнение файла числом $F6, как при форматировании диска
2. Изменение размера файла (дописка в его конец случайного числа байт)
3. Изменение всех трех дат (создание, изменение, доступ) на случайные
4. Переименование файла в файл с именем "a"
5. Удаление файла DeleteFile

После этого восстановление в исходном виде невозможно (в т.ч. невозможно восстановить и атрибуты файла)


 
Rooman   (2002-06-16 11:10) [14]

P.S. п.3 и 4 надо поменять местами...


 
GOOFFY   (2002-06-16 12:20) [15]

Удалено модератором


 
GOOFFY   (2002-06-16 12:21) [16]

Удалено модератором



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

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

Наверх





Память: 0.48 MB
Время: 0.01 c
3-95660
Cossys
2002-08-08 10:02
2002.08.29
Нужен компонент или как это сделать?


1-95765
singledai
2002-08-19 15:38
2002.08.29
FPiette


14-95978
AL2002
2002-08-05 11:24
2002.08.29
Нужна фотка козырного баклажана...


7-95995
vap
2002-06-20 00:03
2002.08.29
Как получить адрес bitmap a экрана


3-95632
j_onion
2002-08-06 04:09
2002.08.29
Перенос BDE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский