Windows 快捷方式的内部结构是什么?

What is the internal structure of a Windows shortcut?

一台电脑3个硬盘:2个Windows XP,1个Windows 7,依次加载操作系统。

我发现在第一个 XP 中创建的某些工作快捷方式(不是全部)在第二个 XP 和 Windows 7 中不起作用(无法查看快捷方式的对象)。

为了理解为什么它不起作用,我在 windows 7 中创建了相同的快捷方式,并在十六进制编辑器中打开了这些快捷方式的两个文件。

我发现它的结构不同,但我不知道如何比较它。

Windows 快捷方式的内部结构是什么?

一些有用的快捷方式内容块的开始和结束字节是什么?

快捷方式(.lnk)文件格式信息可以在[MS.Docs]: [MS-SHLLINK]: Shell Link (.LNK) Binary File Format.

找到

但是,为了避免您阅读整个 .pdf,肯定会在快捷方式中存储一件事(可以通过 "looking" 在快捷方式中进行检查使用十六进制查看器)是它引用的(完整)目标路径(!!!重要!!! 在创建时):所以它是 "DriveLetter:\the_full_path".

为了消除混淆,我建议使用在同一驱动器上具有目标的快捷方式。

切换 HDDs 时,DriveLetters(又名 "C:" ) 指向不同的东西:

  • 假设您在其中一个上创建了一个快捷方式:"C:\shortcut.lnk""C:"DriveLetter 分配给 HDD,其中 Win 从中启动):我们称其为 HDD1
    快捷方式指向位于另一个 HDD(和分区)上的目标文件:我们称其为 HDD2(例如 "E:\target.txt)
  • 当你切换HDDs(制作HDD2主启动盘) DriveLetters 也会改变,所以现在:

    • HDD2 将是 "C:"
    • HDD1 将是 "D:"


    在引入 HDD3 等时,事情变得更加复杂。

作为对我们问题的回答:.lnk 文件不起作用,因为它们的目标不再存在。