请Delphi 高手指点磁盘文件问题。

来源:百度知道 编辑:UC知道 时间:2024/09/20 02:27:01
我用delphi7编写了个程序,可以直接向磁盘的物理扇区写入指定数据或随机数,而且肯定是写入成功了。理论上应该覆盖了磁盘上的文件,但用finaldata2.0还能恢复出很多文件,到底该什么办?(FAT32文件系统不能恢复数据,但NTFS下能。)
代码:

procedure TfrmDiskErase.btnEraseClick(Sender: TObject);
var
ConfirmStr:pchar;
StartTime:TdateTime;
CurrTime:TDateTime;
begin

ConfirmStr:=pchar('你确认要擦写 '+ upcase(dcbdrive.Drive) +': 吗');
if Application.MessageBox(confirmstr,'请确认',MB_YesNo+MB_IconQuestion)=IDYes then
begin
btnread.Enabled := false;
btnerase.Enabled := false;
btnexit.Enabled := false;
btnforward.Enabled := false;
btnbackward.Enabled := false;
lblEscapetime.Visible := true;
lblneedtime.Visible := true;

StartTime :=Time();
FillChar := allocmem(SectorCount * ByteSPerSector);
SectorStart := 0; //起始扇区数
drive := pchar('\\.\' + dcbdrive.Drive + ':');

NTFS文件系统恢复机制要比FAT16和FAT32好,要想通过软件无法恢复,只有从扇区0开始写到整个磁盘空间结束.
如果这样还能恢复你可以用winhex看看,数据是否都是写成你写的数据.

目前windows的文件系统对每个文件的大小有个上限的大小也就是4G.
这主要取决于windows文件系统中,用于记录文件大小的信息占8个byte,也就是2的8次方,换算成byte 也就是4G。

看样子 你只能将大文件分割成多个4G的文件了。

在NTFS文件系统中,每个文件包含多个流,其中一个流用来保存访问权限之类的信息,另一个流用来保存真正的文件数据。除此之外,NTFS还允许额外的数据流,即ADS(Alternative Data Stream),ADS可以用来保存任何信息,最常见的用途是保存图形文件的缩略图。由于许多安全删除文件的工具不能清除ADS,所以即使存放文件实际数据的流已经清除,但缩略图仍可能泄露机密。微软知识库文章319300(http://support.microsoft.com)介绍了如何防止系统创建缩略图使用的流,即删除注册键HKEY_LOCAL_MACHINE\System\Currentcontrolset\Control\Contentindex\FilterTrackers。

希望对你能有所帮助。
我学过点delphi语法 感觉你写的程序没有什么问题。
如果还有什么需要讨论的,百度HI我,或者是qq149709251