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

时间:2015-08-10 14:58:48

标签: ntfs ntfs-mft

我必须阅读正在运行的Windows(XP或更高版本)的MFT文件并通过它来访问保存机器上存在的特定文件内容($ DATA)的高清扇区。

问题在于,在读取MFT到获取相关扇区和读取它们之间,文件系统结构可能会有所不同,而且位置可能不再相关。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果系统中的文件位置不同,则会相应地反映在MFT中。因此,您可以简单地比较读取文件之前和之后的MFT信息,而不是尝试停止文件的任何活动。除非您要解压缩或删除文件的内容,否则文件存储结构不会更改。对文件的添加不会影响您阅读的数据的一致性。因此,如果这是您的方案,您可以继续使用上述方法。