Awa*_*ais 1 c windows winapi ntfs
我正在尝试从 MFT 中删除文件记录,如果我打开原始分区并通过解析 MFT 文件到达所需的文件记录,我就会成功执行此操作。这种方法的问题是,我必须首先锁定卷,以便我可以在任何 MFT 文件记录上写入零,并且如果其他进程持有卷锁定(这是非常有可能的),则由于 Windows 操作系统,写入原始卷会失败限制。
我想到的另一种方法是将“$MFT”作为文件打开,然后对其进行读取和写入。这样我想我就不必锁定音量了。但是,当我尝试通过 createfile winapi 函数打开 $MFT 文件时,即使我以管理员身份运行程序,也会出现“访问被拒绝”错误?
我的问题是如何打开 $MFT 系统文件进行写入和读取?Windows操作系统是否允许系统文件以正常方式读写?如果没有,我还能做什么?
任何帮助,将不胜感激。
以防万一有人来到这里寻求$MFT出于一个合法目的打开FSCTL_MOVE_FILE和,您需要在第二个参数中指定何时打开特殊流,例如FSCTL_GET_RETRIEVAL_POINTERS DeviceIoControlFILE_READ_ATTRIBUTESCreateFileC:\$MFT::$DATA
打开$MFT仅允许您在执行请求时引用特殊文件DeviceIoControl,它不会像普通文件一样打开它进行读写。
如果你真的想读取MFT内容,当你需要非常快速地获取卷上每个文件的列表时,请参阅FSCTL_ENUM_USN_DATA,它返回类似 的结构USN_RECORD_V2,它们本质上是MFT记录。