【发布时间】:2015-08-24 16:34:07
【问题描述】:
我必须读取正在运行的 Windows(XP 或更高版本)的 MFT 文件,并通过它到达保存机器上特定文件内容 ($DATA) 的 HD 扇区。
问题在于,在读取 MFT 直到获取相关扇区并读取它们之间,文件系统结构可能会发生变化,并且位置可能不再相关。
有没有办法将系统“冻结”一段时间?也许保证不会对此文件进行更改?锁定特定文件以使其不在扇区之间移动? (包括由于优化和间接的变化)
当然,我不希望复制整个硬盘并静态工作,因为这是一个缓慢的操作,此时将无法正常使用系统。不用说,我不想使用操作系统的API函数,也不想写驱动。
【问题讨论】:
-
从问题中我不明白您是否真的想读取 $DATA 属性的内容或实际的文件数据 - 由于延迟写入操作和其他几种情况,这不是一回事。
-
我实际上需要我们调用 ReadFile 时显示的真实数据。
-
转向另一个奇怪的方向 - 您可以安装像 WinPE 这样的预启动操作系统,然后从那里开始工作。在这样的环境中,您是唯一的用户进程,您可以不受干扰地处理所有文件。我正在开发一种“修复和成像”产品来做到这一点。搞乱 BCD 有点像跳舞,但拥有固定、稳定的文件状态是如此了不起。 winPE中的用户进程以管理员身份运行,顺便说一句。
-
stackoverflow 'mft' 标签不引用主文件表。它代表 Media Foundation Transform,在这里似乎并不适用。
-
在这种情况下,可能需要考虑使用卷 shadow copy。