对于我正在做的一些商业项目,我需要能够读取存储在$mft文件上的实际数据。
我找到了一个可能有用的gpl库,但是由于它的gpl,我无法将它集成到我的代码中。
请有人告诉我一个我可以使用的项目,或者指向相关的windows (一些不需要1000行代码来实现的东西)。
顺便说一句,为什么windows不允许我直接读取mft文件呢?(通过create文件和read方法,如果我想破坏我的驱动器,那是我的事,而不是Ms的事)。
谢谢。
发布于 2013-07-30 06:15:02
您只需在.\X上使用.\X()打开卷的句柄:其中X是驱动器号(查看CreateFile()上的MSDN文档,它在备注部分中提到了这一点)。
将第一个扇区读入NTFS引导记录结构(您可以在网上找到它,搜索Richard“平板帽”Russon,编辑:我找到它,http://www.flatcap.org/ntfs/ntfs/files/boot.html )。引导扇区结构中的一个字段给出集群中MFT的起始位置($MFT的VCN 0的LCN),您必须对该位置执行SetFilePointer(),以扇区的倍数进行读取。来自该位置的前1024字节是$MFT的文件记录,同样,您可以解析该结构以查找数据属性,该属性总是非常驻的,其大小是该文件的实际大小。
$Boot、文件记录和基本属性(标准信息、文件名和数据)的基本结构以及解析代码应该只运行1000行代码。
发布于 2011-03-22 04:02:03
这将不是一个微不足道的命题。您可能需要提交自己的代码解决方案才能完成这一任务。通过查看$MFT,您可以获得有关http://www.ntfs.com/ntfs-mft.htm细节的一些信息。
另一种选择是花一些时间浏览开源项目NTFS-3g的源代码。您可以从http://www.tuxera.com/community/ntfs-3g-download/下载源代码。
另一个好项目是NTFSProgs http://en.wikipedia.org/wiki/Ntfsprogs。
祝好运。
https://stackoverflow.com/questions/4920243
复制相似问题