如何“说服”程序在 Windows 7 中打开实际的 .lnk 文件?

Jez*_*Jez 37 windows windows-7 shortcuts

一个.lnk在Windows文件是打算成为一个快捷方式到另一个文件的实际文件。但是,我确实想查看.lnk文件本身的内容。我发现这几乎是不可能的;无论我尝试什么,我的应用程序都会打开它指向的文件的内容(拖放到文本或十六进制编辑器、文件 | 从文本或十六进制编辑器打开等)

有什么方法可以告诉程序实际打开 .lnk 文件而不是它指向的文件吗?

and*_*415 20

打开快捷方式

为了编辑快捷方式,您显然需要先打开它,这证明很棘手。在某些情况下,您可以使用命令行参数强制程序加载快捷方式文件:

"X:\Path\to\program.exe" "X:\my shortcut.lnk"
Run Code Online (Sandbox Code Playgroud)

不过,是加载链接目标还是实际的快捷方式文件取决于程序。以下是一些支持开箱即用的免费十六进制编辑器的列表(无特定顺序):


解决方法

如果您无法加载快捷方式文件的内容,您可以打开命令提示符并将.lnk文件重命名为不同的、不存在的扩展名,例如.lne

cd /d "X:\Folder\containing\shortcuts"
ren "my shortcut.lnk" "my shortcut.lne"
Run Code Online (Sandbox Code Playgroud)

如果您有多个文件,您也可以一次重命名所有文件:

ren *.lnk *.lne
Run Code Online (Sandbox Code Playgroud)

然后,您将能够像对待常规文件一样对待这些快捷方式。完成后,请确保将它们重命名以恢复其通常的功能。


附加信息

快捷方式或外壳链接包含用于访问特定链接目标的元数据信息。它由 Windows shell 解析和解释。来自官方文档:

shell 链接结构存储对最终用户有用的各种信息,包括:

  • 可用于启动应用程序的键盘快捷键。

  • 描述性评论。

  • 控制应用程序行为的设置。

  • 存储在额外数据部分的可选数据。

来源:[MS-SHLLINK]:Shell Link (.LNK) 二进制文件格式 - 概述

快捷方式存储为二进制文件,无法使用标准文本编辑器进行编辑。一个典型的.lnk文件在内部看起来像这样:

00000000  4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00  L...........À...
00000010  00 00 00 46 DC 03 00 02 20 00 00 00 C6 EF 52 BE  ...FÜ... ...ÆïR¾
00000020  10 04 CA 01 C6 EF 52 BE 10 04 CA 01 60 45 8A 67  ..Ê.ÆïR¾..Ê.`EŠg
00000030  20 04 CA 01 00 9A 04 00 00 00 00 00 01 00 00 00   .Ê..š..........
Run Code Online (Sandbox Code Playgroud)

前二十个字节始终是以下字节:

4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46
Run Code Online (Sandbox Code Playgroud)

进一步阅读


Vin*_*yak 16

我已经试过了,它在 Windows 8.1 上对我有用:

LNK在记事本中打开文件:

  • 只需将它们拖放到记事本窗口中即可。如果从Open对话框中打开它们,记事本将打开EXE文件指向的LNK文件。

LNKHxD 十六进制编辑器中打开文件:

  • 使用“打开”对话框 ( FileOpen)像打开任何文件一样打开它们

LNK使用命令提示符打开文件:

  • 导航到包含LNK文件的文件夹并键入命令: TYPE SHORTCUTNAME.LNK

LNK在几乎任何程序中打开文件:

  • 启动命令提示符,导航到程序所在的文件夹,使用命令: PROGRAM_NAME.EXE "path to LNK file"


Jul*_*ght 8

.lnk 文件的全部意义在于让 Windows 将其视为到另一个文件的链接,因此它应该很难编辑!

如果您描述了为什么要编辑它,也许会有所帮助。您可以通过右键单击并选择Properties来更改 .lnk 文件的设置。

如果你真的想编辑它,你需要一个特殊的工具。其中有一些,包括:

注意:我没有尝试过任何这些,只是在谷歌上搜索了它们。

更新:

不知道为什么我之前没有想到这一点,但您可以通过 PowerShell 编辑属性。从Stack Overflow 上的这个先前的答案

Copy-Item $sourcepath $destination  ## Get the lnk we want to use as a template
$shell = New-Object -COM WScript.Shell
$shortcut = $shell.CreateShortcut($destination)  ## Open the lnk
$shortcut.TargetPath = "C:\path\to\new\exe.exe"  ## Make changes
$shortcut.Description = "Our new link"  ## This is the "Comment" field
$shortcut.Save()  ## Save
Run Code Online (Sandbox Code Playgroud)

由于它使用的是 Shell COM 对象,因此您也可以使用 WSH 甚至 Office 中的 VBA 来执行此操作!

  • @JulianKnight 我曾经使用过一次以编程方式生成它们以放置在充当索引的文件夹中。我不得不承担安装软件的任何权利,但我们已经在使用 VBA。事实证明,修改模板 .lnk 比从头生成模板更容易。 (3认同)
  • 我想编辑它的内容,最好在十六进制编辑器中,因为我认为它可能已损坏,而且我不相信 Explorer 会正确地告诉我它的内容。 (2认同)