即使以管理员身份运行,打开 $MFT 文件也会导致访问被拒绝

Awa*_*ais 1 c windows winapi ntfs

我正在尝试从 MFT 中删除文件记录,如果我打开原始分区并通过解析 MFT 文件到达所需的文件记录,我就会成功执行此操作。这种方法的问题是,我必须首先锁定卷,以便我可以在任何 MFT 文件记录上写入零,并且如果其他进程持有卷锁定(这是非常有可能的),则由于 Windows 操作系统,写入原始卷会失败限制。

我想到的另一种方法是将“$MFT”作为文件打开,然后对其进行读取和写入。这样我想我就不必锁定音量了。但是,当我尝试通过 createfile winapi 函数打开 $MFT 文件时,即使我以管理员身份运行程序,也会出现“访问被拒绝”错误?

我的问题是如何打开 $MFT 系统文件进行写入和读取?Windows操作系统是否允许系统文件以正常方式读写?如果没有,我还能做什么?

任何帮助,将不胜感激。

dou*_*536 6

以防万一有人来到这里寻求$MFT出于一个合法目的打开FSCTL_MOVE_FILE和,您需要在第二个参数中指定何时打开特殊流,例如FSCTL_GET_RETRIEVAL_POINTERS DeviceIoControlFILE_READ_ATTRIBUTESCreateFileC:\$MFT::$DATA

打开$MFT仅允许您在执行请求时引用特殊文件DeviceIoControl,它不会像普通文件一样打开它进行读写。

如果你真的想读取MFT内容,当你需要非常快速地获取卷上每个文件的列表时,请参阅FSCTL_ENUM_USN_DATA,它返回类似 的结构USN_RECORD_V2,它们本质上是MFT记录。