我一直在努力从MFT中检索文件信息。我看到MFT记录有关于标准信息,文件名,数据和其他一些属性的信息。我尝试解析MFT记录以获取它包含的所有细节。我能够获取所有文件的文件名,数据(包括备用流的数据),但我无法获取指定备用数据流的文件名。出于测试目的,我创建了一个包含两个包含数据的命名备用流的文件。当我解析对应于该文件的MFT记录时,我无法识别备用流名称。这是否意味着备用流名称不存储在MFT中?那么一些实用程序如stream.exe如何识别备用流名称?
答案 0 :(得分:1)
如果您自己解析属性,可以在公共标题中找到属性名称的偏移量。如果我没有弄错(我发现它here),则属性的偏移WORD
标题中会有0x0A
值。偏移量指向属性的名称。 属性标题大小 + 属性名称的长度 + 数据的长度(如果不是常驻数据则运行,否则为实际数据)匹配存储在公共标题字段中的属性长度(偏移0x04
)。
如果您正在使用Windows API,则可以使用文件上的FindFirstStreamW功能来获取它的流。它通常返回一个WIN32_FIND_STREAM_DATA结构,其中包含流的名称。