在运行时从MFT读取文件内容

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

问题是,在阅读MFT到获取相关扇区并读取相关扇区之间,文件系统结构可能会有所不同,并且这些位置可能不再相关。

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

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


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

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


如果系统中的文件位置发生变化,它将相应地反映在MFT中。 因此,不要试图阻止文件的任何活动,只需在读取文件之前和之后比较MFT信息即可。 除非您将文件的内容拆分或删除,否则文件存储结构不会更改。 对文件的添加不会影响您读取的数据的一致性。 所以如果这是你的场景,你可以继续使用上述方法。

链接地址: http://www.djcxy.com/p/82623.html

上一篇: Reading file content from the MFT at runtime

下一篇: Improve execution time to read binary file