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

jah*_*jah 5 windows hex structure shortcut

在一台计算机上安装3个HDD:2个安装Windows XP,1个安装Windows 7,依次从每个计算机中加载操作系统。

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

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

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

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

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

Cri*_*ati 5

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

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

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

当切换HDD 时DriveLetter(又名“C:”)指向不同的东西:

  • 比方说,你上的快捷方式其中之一创建的:“C:\ shortcut.lnk”“C:”驱动器号分配给HDD哪里从引导):我们称之为HDD1
    快捷方式指向位于另一个硬盘(和分区)上的目标文件:我们称之为HDD2(例如“E:\target.txt
  • 当您切换HDD(制作HDD2主启动盘)时,DriveLetter也会改变,所以现在:

    • HDD2将是“C:”
    • HDD1将是“D:”


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

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