Текущий архив: 2002.08.29;
Скачать: CL | DM;
ВнизКак удалить файл без возможности его востановления ? Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.005 c