Windows 无法修改NTFS主文件表(MFT)中的文件记录

Windows 无法修改NTFS主文件表(MFT)中的文件记录,windows,filesystems,ntfs,Windows,Filesystems,Ntfs,我正在编写一个程序来删除Windows中NTFS卷中的文件和所有相关属性,包括0x30$file\u名称、0x80$DATA、0x90$INDEX\u根和0xA0$INDEX\u分配等 我现在可以找到文件记录在任何文件中的位置。为了防止恢复,我会覆盖文件记录几次,然后我放回文件记录将具有的基本信息,即第一个属性0x10$Standard_信息的标准属性头 我以前写文件记录,返回值表示函数成功。 之后,通过WinHex打开磁盘查看原始数据,我可以看到文件记录实际上被修改了 但问题是,在我删除了另外

我正在编写一个程序来删除Windows中NTFS卷中的文件和所有相关属性,包括0x30$file\u名称、0x80$DATA、0x90$INDEX\u根和0xA0$INDEX\u分配等

我现在可以找到文件记录在任何文件中的位置。为了防止恢复,我会覆盖文件记录几次,然后我放回文件记录将具有的基本信息,即第一个属性0x10$Standard_信息的标准属性头

我以前写文件记录,返回值表示函数成功。 之后,通过WinHex打开磁盘查看原始数据,我可以看到文件记录实际上被修改了

但问题是,在我删除了另外两三个文件后,前一个文件的文件记录再次出现,好像我从未对它做过任何事情一样

我认为这可能是Windows文件管理的某种恢复机制。我想知道是否有任何方法可以在Windows不恢复的情况下成功修改文件记录


另外,在手动修改文件记录之前,我通常会处理B+树和其他内容。

您确定MFT记录已被删除吗?因为如果是,那么文件就不会再出现

检查从VCN到实际CN和扇区号的MFT记录位置计算。 此外,还有一个$MFTMirror,您应该检查$MFTMirror中是否存在相关文件的MFT记录的副本…如果是,那么您甚至应该删除该记录


如果你能分享你的MFT记录定位器的代码,很可能这就是问题所在。。。我可以为您提供更多帮助。

您确定MFT记录已被删除吗?因为如果是,那么文件就不会再出现

检查从VCN到实际CN和扇区号的MFT记录位置计算。 此外,还有一个$MFTMirror,您应该检查$MFTMirror中是否存在相关文件的MFT记录的副本…如果是,那么您甚至应该删除该记录


如果你能分享你的MFT记录定位器的代码,很可能这就是问题所在。。。我可以帮你更多。

我正在尝试做类似的事情,但是当我尝试写入MFT时,访问被拒绝。ReadFile工作正常,但在尝试写文件时失败

我使用下面的方法来获得初始句柄

    h = CreateFile(drive
        , GENERIC_READ | GENERIC_WRITE
        , FILE_SHARE_READ | FILE_SHARE_WRITE
        , NULL
        , OPEN_EXISTING
        , 0
        , NULL);
然后使用ReadFile进入引导扇区,最终枚举文件/目录

ReadFile(h, &bSec, sizeof bSec, &read, NULL);

当我以后使用WriteFile时。。。拒绝访问是否需要在句柄上设置安全选项才能写入MFT。我做了一些谷歌搜索,但是找不到任何有用的东西。

我正在尝试做类似的事情,但是当我尝试写入MFT时,访问被拒绝。ReadFile工作正常,但在尝试写文件时失败

我使用下面的方法来获得初始句柄

    h = CreateFile(drive
        , GENERIC_READ | GENERIC_WRITE
        , FILE_SHARE_READ | FILE_SHARE_WRITE
        , NULL
        , OPEN_EXISTING
        , 0
        , NULL);
然后使用ReadFile进入引导扇区,最终枚举文件/目录

ReadFile(h, &bSec, sizeof bSec, &read, NULL);
当我以后使用WriteFile时。。。拒绝访问是否需要在句柄上设置安全选项才能写入MFT。我做了一些谷歌搜索,但是没有找到任何有用的东西