打开快捷方式

打开快捷方式

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

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

答案1

打开快捷方式

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

"X:\Path\to\program.exe" "X:\my shortcut.lnk"

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


解决方法

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

cd /d "X:\Folder\containing\shortcuts"
ren "my shortcut.lnk" "my shortcut.lne"

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

ren *.lnk *.lne

然后,您就可以像对待普通文件一样对待这些快捷方式。完成后,请确保将其重命名以恢复其正常功能。


附加信息

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

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

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

  • 描述性评论。

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

  • 可选数据存储于额外数据部分

来源:[MS-SHLLINK]: Shell 链接 (.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   .Ê..š..........

前 20 个字节始终是以下字节:

4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46

进一步阅读

答案2

我已经尝试过这个并且它在 Windows 8.1 上对我有效:

在记事本中打开LNK文件:

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

打开LNK文件HxD十六进制编辑器

  • File使用打开对话框 ( → Open)像打开任何文件一样打开它们

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

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

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

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

答案3

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

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

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

注意:我没有尝试过这些,只是用 Google 搜索过。

更新:

不知道为什么我之前没想到这一点,但你可以通过 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

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

答案4

如果你使用命令以链接文件作为参数来运行程序,该参数将逐字传递给程序。由程序决定如何处理链接。

我已经测试过了高频热释光,免费(和便携式)十六进制编辑器:当您从命令行运行它时,将链接作为参数传递,它会提示您是否要打开链接到的文件(是的)、链接本身(), 或者取消

奇怪的是,如果你在高频热释光文件菜单,它会不经询问就打开目标文件。

在 XP 上我有高频热释光在我的发给上下文菜单,其工作方式与命令我想象 Win7 也类似(我使用 Win7 系统来运行专用应用程序,我会对它进行简单的测试,如上所述,但我不会弄乱它的配置)。

相关内容