4

我正在为最终用户编写一个启动器/安装程序,除其他外,它可以选择在开始菜单和/或桌面上生成快捷方式。

理想情况下,我希望这些快捷方式能够支持这些场景:

  • 用户根据自己的喜好更改显示的名称;
  • 用户将快捷方式移动或复制到其他地方(例如,快速启动);
  • 启动器稍后发现它需要更新快捷方式的图标和/或目标位置。

现在,启动器对此并不聪明——如果它已经找到具有当前名称的快捷方式,它将不理会它;如果没有,它将创建一个新的。因此,如果快捷方式的某些内容发生了变化,无论是用户还是启动器的数据库,您现在都会得到一个是当前的,而另一个不是。

为了正确跟踪包括移动和复制在内的快捷方式,我想知道是否在每个仅包含 UUID 的快捷方式中放置一个 NTFS 备用数据流“FoobarInstaller.Shortcut”是一个可行的选择。理想情况下,我希望扫描整个用户目录树(或者可能只是典型的位置,如桌面、开始菜单和快速启动)以查找带有流的文件,并查看是否需要对这些文件应用更新。

我不知道这是否有效。NTFS/Win32 是否具有 API 以有效地按名称查找具有特定 ADS 的所有文件?

4

1 回答 1

0

NTFS 有一种唯一标识文件的方法:对象 ID。它们在重命名时不会更改,您可以按 id 查找文件。您可以将对象 ID 数据库保存在众所周知的位置(例如,在用户应用程序数据目录中)。然后您可以在恒定时间内找到所有现有的快捷方式。

我相信一些Windows“移动快捷方式修复”功能使用了这个。

于 2015-02-25T18:16:08.047 回答