转储$ mft文件的内容

对于我正在做的一些商业项目,我需要能够读取存储在$ mft文件中的实际数据。

我发现一个gpl lib可以帮助,但因为它的gpl我不能将其集成到我的代码。

有人可以请我指向一个项目,我可以使用/或指向我在相关的Windows API(不需要1000行代码来实现)

顺便说一句,为什么不直接允许我直接读取mft文件呢? (通过创build文件和读取方法,如果我想毁了我的驱动器,这是我的事业不小姐)。

谢谢。

你只需要使用\。\ X上的CreateFile()来打开一个卷的句柄:其中X是驱动器号(查看CreateFile()上的MSDN文档,它在备注部分提到了这一点)。

将第一个扇区读入NTFS引导记录结构(可以在网上找到它,搜索Richard“Flatcap”Russon,编辑:我发现它, http ://www.flatcap.org/ntfs/ntfs/files/boot.html )。 引导扇区结构中的一个字段给出MFT在簇中的起始位置($ MFT的VCN 0的LCN),您必须对该位置执行一个SetFilePointer()以读取多个扇区。 从该位置开始的1024个字节是$ MFT的文件记录,同样可以解析这个结构来查找总是非驻留的数据属性,它的大小就是当时MFT文件的实际大小。

$ Boot,File Record和基本属性(标准信息,文件名和数据)以及解析代码的基本结构应该运行1000行代码。

这不会是一个微不足道的提议。 你可能不得不推出你自己的代码解决方案来实现这一点。 您可以通过查看http://www.ntfs.com/ntfs-mft.htm获取有关$ MFT的详细信息

另一个选择是花一些时间浏览开源项目NTFS-3g的源代码。 您可以从http://www.tuxera.com/community/ntfs-3g-download/下载源代码

另一个好项目是NTFSProgs http://en.wikipedia.org/wiki/Ntfsprogs

祝你好运。