![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить файл без возможности его востановления ? [D5, D6, Win95/98, WinME]
Lizard © (2002-06-13 21:27:00)Как это выполнить программно по принципу Нортоновского
Wipe Info. Чтобы на диск поверх файла записалась всякая лабуда
и первоначальный файл нельзя было восстановить ?
Заранее благодарен.
GOOFFY (2002-06-16 12:21:00) [1]Удалено модератором
GOOFFY (2002-06-16 12:20:00) [2]Удалено модератором
Rooman (2002-06-16 11:10:00) [3]Полноценный Wipe должен содержать следующие моменты:
1. Заполнение файла числом $F6, как при форматировании диска
2. Изменение размера файла (дописка в его конец случайного числа байт)
3. Изменение всех трех дат (создание, изменение, доступ) на случайные
4. Переименование файла в файл с именем "a"
5. Удаление файла DeleteFile
После этого восстановление в исходном виде невозможно (в т.ч. невозможно восстановить и атрибуты файла)
Rooman (2002-06-16 11:10:00) [4]P.S. п.3 и 4 надо поменять местами...
Anatoly Podgoretsky (2002-06-16 10:27:00) [5]Извиняюсь, так неакуратно написано, а как было красиво :-)
~Rand~ (2002-06-16 09:13:00) [6]Удалено модератором
vuk (2002-06-15 15:00:00) [7]to Anatoly Podgoretsky:
Там вложенная процедура...
Anatoly Podgoretsky (2002-06-15 14:03:00) [8]У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
У попа была собако он ее убил и на камне написал
...
Lizard (2002-06-15 13:48:00) [9]Можно подробнее (для начинающих) ?
Спасибо.
Anatoly Podgoretsky (2002-06-14 22:17:00) [10]procedure RandomizeBuffer;
...
RandomizeBuffer;
...
Вот это мне всегда нравится, вспоминаю про попа и его собаку
Lizard (2002-06-14 21:54:00) [11]To: BJValentine
Такое я пробовал, но wipe info находит оба варианта,
т.е. получаются два файла на диске.
Lizard (2002-06-14 21:49:00) [12]Огромное спасибо за помощь, все получилось.
Приношу извинения, но появился еще один вопрос.
А если необходимо удалить не один, а группу файлов, расположенных
в одной директории, как это будет выглядеть ?
Предложенный мною ниже способ почему-то не работает и выдает
сообщение о выполнении недопустимой ошибки.
Не могли бы Вы подсказать мне, в чем проблема ?
Спасибо.
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;
BJValentine (2002-06-14 21:32:00) [13]Открываешь файл для перезаписи, записываешь пустую строку туда, закрываешь его и удаляешь. Всё! 5-6 строчек.
Song (2002-06-14 15:44:00) [14]
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;
Lizard (2002-06-14 14:11:00) [15]Огромное спасибо за ответ, но что-то ничего не выходит.
Очень буду признателен Вам, если отправите рабочий исходник
(если не трудно).
mailto: unks@mail.ru
Best regards, Lizard.
Song (2002-06-13 21:48:00) [16]
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;