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

标签 windows file filesystems ntfs

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

$OBJECT_ID – This is an attribute that holds an ID. This ID is used by the Distributed Link Tracking Service. An example of how it is used would be found in shortcuts. Make a shortcut on your desktop that points to a file. Then move that file. The shortcut will still function because it is using a way to tack the source file other than just the path and file name.

Not all files will have an $OBJECT_ID attribute. In fact, it isn’t until an actual ID is to be assigned that the attribute is added to the file.

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

  1. 对象 ID 何时分配?根据上述文章,在一种情况下,当创建文件的快捷方式时会出现这种情况。

  2. 当一个文件引用另一个文件时,是否会自动分配对象 ID,例如嵌入 Visio 图表的 Word 文档?

  3. 对象 ID 是仅在启用/运行分布式链接跟踪时分配,还是不管分布式链接跟踪是否存在?

  4. 如果我想跟踪一个文件的唯一标识符,使用对象 ID(64 字节)比组合的卷序列号和文件索引(低/高)有任何优势吗?是 12 个字节组合。

谢谢,伊兰

最佳答案

这完全取决于您要做什么。 :)

文件索引号,如documentation says , 实际上只是 NTFS 中文件的一个很好的标识符(与 FAT 相对),但即便如此,如果文件被删除并重新创建(想想备份/恢复),它也会改变,尽管你可能实际上认为这是一个奖励,如果你是想要区分它们。

最好不要担心与对象 ID 相关的链接跟踪服务,而是将它们视为您可以使用的东西 create/set/read , 虽然同样只在 NTFS 中。

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

关于windows - NTFS 和 $Object_ID 上的唯一文件标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892592/

相关文章:

c++ - 高效读取csv文件的最后一行

c# - 在 C# 中创建文件的最快方法

c# - 如何浏览我的 Windows 10 应用程序中的相邻文件?

ruby - 如何将所有文件递归复制到 Ruby 中的平面目录?

windows - 在命令行上将 XLS 转换为 CSV

c++ - 强制资源管理器重新加载注册表值

windows - 如何嗅探本地流量

windows - 删除所有包含字符串的文件

c - sscanf 语句停止程序

python-3.x - Pathlib mkdir 引发 FileExistsError 尽管文件实际上并不存在