NTFS和$ Object_ID上的唯一文件标识符

从我在网上find的文章看来,NTFS上的文件似乎有两种唯一标识符:

  • 使用Windows API GetFileInformationByHandle(),我们可以访问结构BY_HANDLE_FILE_INFORMATION,它包含一个卷序号和一个低/高文件索引。 http://msdn.microsoft.com/en-us/library/aa363788(VS.85).aspx

  • $ Object_ID – 文章http://blogs.technet.com/b/askcore/archive/2010/08/25/ntfs-file-attributes.aspx指出:

$ OBJECT_ID – 这是一个保存ID的属性。 此ID由分布式链接跟踪服务使用。 如何使用它的例子可以在快捷方式中find。 在桌面上制作一个指向文件的快捷方式。 然后移动该文件。 该快捷方式仍然可以正常工作,因为它正在使用一种方法来粘贴源文件,而不仅仅是path和文件名。

并不是所有的文件都有$ OBJECT_ID属性。 实际上,直到分配一个实际的ID才能将该属性添加到文件中。

我试图了解何时设置对象ID。 这里有几个问题:

  1. 对象ID什么时候分配? 这将基于上面的文章来看,在一种情况下,当创build文件的快捷方式时会发生这种情况。

  2. 当文件引用其他文件,例如embeddedVisio图表的Word文档时,是否自动分配对象ID?

  3. 只有在分布式链接跟踪启用/运行时才能分配对象ID,或者不pipe分布式链接跟踪如何,它们是否存在?

  4. 如果我想跟踪一个文件的唯一标识符,对于我使用组合的卷序号和文件索引(低/高)(合并为12个字节)的对象ID(64字节)是否有利。

谢谢,Elan

这一切都取决于你想做什么。 🙂

文件索引号就像文档中所说的那样 ,实际上只是NTFS文件的一个很好的标识符(而不是FAT),但即使如此,如果文件被删除并被重新创建(认为是备份/恢复),文件索引号也可以改变可能实际上认为这是一个奖金,如果你想区分这些。

可能最好不要担心链接跟踪服务的对象ID,而是把它们想象成可以创建/设置/读取的东西 ,尽管只是在NTFS中。

对象ID有一些开销,而文件ID不。 对于大多数应用程序,我可能最终会选择文件引用号码(即使它们可能很脆弱)。

我想把这个放在这里给像我这样的人研究FRN和OBJECTID。 对于单个文件系统上的目录(文件还原除外),这些ID可能是稳定的,但FRN和ObjectID都会在您保存并关闭具有多个不同应用程序的文件后立即更改。 例如,如果使用FRN#:1000打开Word文件,并且已经分配了OBJECTID:8675309,则在进行更改时,请保存并关闭它。 FRN#将是一个新的号码,将不会有ObjectID。 在下面我做了一个简单的打开,改变了段落中的文字,保存并关闭了一个文字文件。 有超过52个事件,在我的程序中,我已经滤除了所涉及的所有〜WRL * tmp文件等。 但即使在相同的文件系统上,FRN也不是一个常量。 我目前没有显示ObjectID,但是当你指定一个时,相信我,打开这个文件并保存它,它本质上是一个新文件。 示例USN日志输出:第一个数字是文件引用号,第二个是父文件引用号(目录的FRN是稳定的)。 viewchanges 562949953421470 | 2251799813685402 | FILE | 7/10/2014 8:12:13 PM | \ MyDemo \ WordFileDemo.docx

对象ID更改

562949953421470 | 2251799813685402 | FILE | 7/10/2014 8:12:13 PM | \ MyDemo \ WordFileDemo.docx对象ID更改

562949953421470 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx

重新命名旧名称

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改重命名新名称基本信息更改

对象ID更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改重命名新名称基本信息更改对象ID更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx

安全更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx

对象ID更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx对象ID更改

1125899906842780 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx

重新命名旧名称

1125899906842781 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改重命名新名称基本信息更改

对象ID更改

1125899906842781 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改重命名新名称基本信息更改对象ID更改

1125899906842781 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx

安全更改

1125899906842781 | 2251799813685402 | FILE | 7/10/2014 8:12:19 PM | \ MyDemo \ WordFileDemo.docx安全更改