分布式链接跟踪和对象标识符
使用文件或目录的路径和文件名存储对目录的引用是不可靠的。 如果用户重命名文件,则会中断指向该文件的链接。 如果用户重命名目录,则会中断指向文件以及目录树中的所有文件和子目录的链接。
分布式链接跟踪服务使客户端应用程序能够跟踪已移动的链接源。 订阅链接跟踪服务的客户端可以维护其引用的完整性,并且可以以对用户透明的方式跟踪对象。
对象标识符
链接跟踪服务通过使用对象 标识符 (ID) 来维护其指向对象的链接。 对象 ID 是一个可选属性,用于唯一标识卷上的文件或目录。
所有对象 ID 的索引存储在卷上。 重命名、备份和还原操作会保留对象 ID。 但是,复制操作不会保留对象 ID,因为这会违反其唯一性。
可以对对象 ID 执行以下操作:
- 创建
- 删除
- 查询
创建对象 ID 时,需将文件标识建立到链接跟踪服务。 相反,删除对象 ID 时,链接跟踪服务将停止维护指向该文件的链接。 有关对对象 ID 执行操作的文件系统控制代码的列表,请参阅 文件管理控制代码。
分布式链接跟踪服务跟踪 NTFS 文件系统卷中 shell 快捷方式和 OLE 链接的链接源。 链接客户端可以使用有关链接源新位置的更新信息修复断开的链接。
链接跟踪功能
Shell 快捷方式包括启发式链接跟踪,该跟踪使用树搜索算法查找移动链接源的匹配项。 搜索算法基于文件和文件信息的最后已知路径,其中包括创建日期、文件大小以及文件名和扩展名。
OLE 链接包括相同的启发式链接跟踪。 Windows 还包括相同的启发式链接跟踪,并增加了一些针对搜索名称空间的改进,以在某些常见方案中产生结果。 这些改进包括以下过程,该过程取决于客户端应用程序施加的时间限制。
搜索名称空间
- 从最后一个目录向下搜索四个目录级别。
- 向上移动一个目录,再重复步骤 1 和 2 三次,如果对象移动到附近,可能会产生结果。
- 从桌面根目录向下搜索四个级别,如果对象已移动到同一桌面上的某个位置,则可能会生成结果。
- 从每个本地固定驱动器的根目录向下搜索四个级别。
- 重复步骤 1-3,没有四个目录限制。
注意
这些链接跟踪方案对最终用户是透明的。 但是,它们并不总是产生积极的结果,并且可能很耗时。
有关 shell 快捷方式的详细信息,请参阅 IShellLink。
有关 OLE 链接的详细信息,请参阅 IOleLink。
如果链接到 NTFS 3.0 或更高版本上的文件,并将该文件移动到同一域中具有 NTFS 3.0 或更高版本的任何其他卷,则跟踪服务可以根据时间注意事项找到该文件。 此外,如果文件移动到域外部或工作组内,则会找到该文件。
若要获取卷的 NTFS 版本,请使用管理员访问权限打开命令提示符并执行以下命令:
fsutil fsinfo ntfsinfoX:
其中 X 是卷的驱动器号。
创建指向文件的链接时,目标文件被视为 链接源,链接的创建者是 链接客户端。 例如,如果创建了链接到文本文档的 shell 快捷方式,则文本文档是链接源,而 shell 快捷方式是链接客户端。
分布式链接跟踪服务为域中发生的以下情况维护文件链接:
- 链接源文件从一个 NTFS 文件系统卷移动到同一域中的另一个。
- 保存链接源的计算机的名称已重命名。
- 链接源计算机上的网络共享已更改。
- 保存链接源文件的卷将移动到同一域中的另一台计算机。
分布式链接跟踪服务还会尝试在上述情况下维护链接,即使这些链接不在域中发生(即跨域或工作组内)。 在链接源计算机上的网络共享发生更改的情况下,始终可以维护链接。 当链接源在计算机中移动时,也可以维护它们。 链接源移动到另一台计算机时,通常可以维护链接,但随着时间的推移,这种形式的跟踪不太可靠。
链接跟踪功能
链接跟踪功能主要以以下两个系统服务的形式实现:
- 分布式链接跟踪客户端
- 分布式链接跟踪服务器
-
分布式链接跟踪客户端
-
分布式链接跟踪客户端在所有计算机上运行,并管理该计算机的链接跟踪活动。 这些活动包括搜索链接源和处理链接源移动。 移动链接源时,服务会将信息传递给域控制器上运行的分布式链接跟踪服务器。
-
分布式链接跟踪服务器
-
分布式链接跟踪服务器在域中的每个域控制器上运行。 该服务接受来自计算机上的跟踪服务的文件和卷移动的通知,并允许分布式链接跟踪客户端查询链接源的当前位置。
此服务器服务在域控制器中维护有关已移动的卷和文件的信息。 有关移动的信息不能超过特定大小,如果变得不必要,将自动删除。
链接跟踪服务由 IShellLink 和 IOleLink 接口公开。 因此,它们由 shell 快捷方式使用。 调用 IShellLink::Resolve 方法且找不到引用文件时,例如,当用户激活 shell 快捷方式时,会自动调用跟踪服务来查找该文件。 同样,当 IOleLink 实现找不到文件(例如在其 BindToSource 方法中)时,它会自动调用跟踪服务。
链接跟踪限制
分布式链接跟踪服务仅在 NTFS 文件系统上可用,并且仅适用于 NTFS 3.0 或更高版本上的链接源。 因此,如果将链接源移动到 FAT 文件系统卷,跟踪信息将丢失。 此外,如果链接源在 NTFS 3.0 或更高版本之间移动,但执行移动的计算机正在运行早期版本的 Windows,则链接跟踪信息将丢失。 当链接跟踪信息丢失时,不会对链接源文件本身造成损害,分布式链接跟踪服务根本无法跟踪它。
若要获取卷的 NTFS 版本,请使用管理员访问权限打开命令提示符并执行以下命令:
fsutil fsinfo ntfsinfoX:
其中 X 是卷的驱动器号。
不会保留指向可移动媒体上的文件的链接。 此外,在重新启动系统之前,跟踪服务无法识别新的 NTFS 文件系统卷。 新卷可能因重新分区、将 FAT 文件系统卷重新格式化到 NTFS 文件系统或连接新的外部驱动器而变得可用。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈