0

我必须读取正在运行的 Windows(XP 或更高版本)的 MFT 文件,并通过它到达保存机器上特定文件内容($DATA)的 HD 扇区。

问题在于,在读取 MFT 直到获取相关扇区并读取它们之间,文件系统结构可能会发生变化,并且位置可能不再相关。

有没有办法将系统“冻结”一段时间?也许可以保证这个文件不会有变化?锁定特定文件以使其不在扇区之间移动?(包括由于优化和间接变化)

当然,我不希望复制整个硬盘并静态工作,因为这是一个缓慢的操作,此时将不允许正常使用系统。不用说,我不想使用操作系统的API函数或编写驱动程序。

4

2 回答 2

0

我只需使用读取共享模式打开文件,请求读/写访问权限。如果您成功打开文件,则可以保证在关闭句柄之前数据不会更改。请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/hh449422%28v=vs.85%29.aspx

如果你想在已经被不同进程打开和锁定的文件上实现这一点,那是完全不同的故事,我相信你必须编写自己的过滤器驱动程序。

于 2015-08-10T19:21:29.337 回答
0

如果系统中的文件位置发生变化,则会相应地反映在 MFT 中。因此,您可以简单地比较读取文件前后的 MFT 信息,而不是试图停止文件的任何活动。除非您对文件的内容进行碎片整理或删除,否则文件存储结构不会改变。对文件的添加不会影响您读取的数据的一致性。因此,如果这是您的情况,您可以继续使用上述方法。

于 2015-08-11T05:10:40.267 回答