关于 Windows 上的一类文件有这么一些笑话:你请某人发送一个文件副本,Ta 将桌面上的「文件」拖到了聊天框,叮当一响,你收到了一份document.lnk;你告诉 Ta 将某某软件卸载,于是 Ta 把桌面上的「软件」移到了回收站,告诉你「搞定了」……
这类文件读者都很熟悉,我们一般称之为快捷方式,它们的图标上都带着小箭头。大部分软件安装后往往会同时在桌面和开始菜单中创建快捷方式;如果没有,一些读者可能会在目标文件上右键 > 发送到 > 桌面快捷方式自己己新建一个。
但除了右键发送到桌面,Windows 快捷方式其实还可以更快捷:在引用对象支持的情况下,它能做到直接调用软件的子功能、以某个模式启动程序等等。
让我们先从快捷方式的工作方式讲起。
快捷方式的基本知识
在微软的 开发者文档 中,快捷方式有另外一个更准确的表述:Shell Links,可翻译为壳层链接。这个名称更趋近于它的本质:用于 Windows 壳层(Shell)的链接文件。Windows 图形壳层自然是资源管理器(explorer.exe),这是它赖以工作的进程;而「链接」则说明 Shell Links 是指向引用对象(corresponding object)的文件而并非对象本身。
工作方式和属性
以桌面上的Firefox.lnk为例,当我们双击此链接,资源管理器发现用户尝试打开的文件类型为快捷方式,便读取了它的「目标」属性的内容C:\Program Files\Mozilla Firefox\firefox.exe,然后尝试打开此「目标」,Firefox 程序于是被唤起了。
这和我们在资源管理器地址栏输入 Firefox.exe 位置的原理和效果是类似的。
但不同的是,快捷方式有几个其他的属性是我们不能通过填充地址栏做到的:
- 起始位置(工作目录 & working directory):告诉资源管理器从哪个位置打开目标,或者说,将目标运行在哪个位置;
- 快捷键:当焦点位于快捷方式所在目录时,资源管理器接受以快捷键打开链接;
- 备注/图标:快捷方式作为一个文件用于展示自己的各类信息。
后缀名和类型
听到打开快捷方式和在资源管理器地址栏输入地址类似,一些读者可能会想到,Windows 资源管理器地址栏不光能输入文件地址,还可以输入shell:downloads直接打开下载文件夹,输入shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}打开控制面板,输入http://example.com打开网站……
是的,快捷方式也能接受这些内容。根据引用对象种类的不同,常用的快捷方式分为两种:
- .lnk链接文件:注册表位置HKCR\lnkfile,引用对象是目录或文件(包括可执行程序);
- .url网络快捷方式:注册表位置HKCR\InternetShortcut,引用对象是 URI。
创建方式和解析过程
通过图形界面创建快捷方式目前有两种途径:从引用对象创建和使用向导创建:
- 从引用对象创建:这种方式需要我们提前定位到引用对象(即快捷方式的目标),选中这个对象,要么右键 > 发送到 > 桌面快捷方式,要么按住Alt键,使用鼠标拖动文件到目标目录,然后松开鼠标。前者在 Windows 11 已经变得非常繁琐。
- 使用快捷方式创建向导:在任意目录下右键,选择新建 > 快捷方式,填入引用对象的地址和名称。
以上面两种方式创建快捷方式时,引用对象必须存在。但是创建完成后,引用对象存在与否就不再影响快捷方式,两者只会在用户打开快捷方式时发生关联。
当用户双击快捷方式时,系统会尝试解析该快捷方式:首先它会用快捷方式指向的路径检查引用对象是否能直接找到;如果路径的目标无对象,资源管理器接下来会使用名为 分布式链接跟踪 的技术,依靠对象原来的大小,名称,创建日期等信息进行检索,成功找到目标后 Windows 会自动更新快捷方式的目标属性;若无法找到则会提示用户删除快捷方式。
链接跟踪技术的应用给快捷方式带来了硬链接一样的解析效果:引用对象删除后恢复、重命名、移动位置都不会导致快捷方式失效。由于它也像符号链接一样依靠文件路径定位,所以只要路径正确,无论引用对象是否是原来的文件,快捷方式都会将其打开。
与符号链接的区别
同样可以链接到文件的路径,同样由系统提供支持,快捷方式和 符号链接 却有本质上的区别。快捷方式仍然是一个文件,它有自己的后缀名,有对应的数据(一个地址)和大小(几 KB),还有自己的图标和属性。但符号链接没有对应的数据对象,因而也没有大小可言,它没有后缀名,不具有完整文件结构。
打开创建的快捷方式,编辑其「目标」属性,在后面添加-t”模板文件路径” -q,这告诉 Word 跳过启动动画并按模板文件直接新建一个文档。将图标和快捷键名称改成自己喜欢的样子,一个简单便捷的快捷方式就做好了。
实际上,Chrome 为安装的浏览器应用创建的快捷方式,和它为不同的用户创建的快捷方式也都是通过添加标识和参数实现的。
用例三:一键归档桌面的已用图片
文章写到现在,笔者的桌面已经堆了不少配图。由于个人习惯边写边配图,需要用的图片已经自动上传图床,桌面上的图片大概率不会再用到了。我期望将它们快速移动到一个文件夹中,让桌面上新放的图更好找到。
截图和制图工具自动生成的图片命名全都以年份(2021)开头,所以这个操作用 PowerShell 实现起来并不难:
ni archive -Type Directory -Force; mv 2021* -Destination .\archive\
想要用快捷方式调用 PowerShell,可以找找pwsh.exe( PowerShell 7 的 exe 名称)有没有给什么提示:在终端输入pwsh.exe -h,发现可以用-c参数调用命令:
在快捷方式中调用它们也很简单,方法是使用explorer.exe shell:Name或者explorer.exe shell:::GUID。举例来说,想要创建一个直达声音设置界面的快捷方式,可以使用右键,新建快捷方式,其内容填explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}。
当然,我们的目标只是找到打开 Obsidian 某条目的快速方法。使用过 Obsidian 的读者应该能发现右键某个条目会有复制 Obsidian URL的选项,我们需要的就是这样一个链接。
同样使用右键调出创建向导,在弹出的内容中填写刚刚复制的 URI,一个快捷方式就创建完成了。如果还有其他需要快速调用的笔记,也可以如此操作。
用例二:常用聊天界面直达
和要好的朋友聊天、写邮件,有什么东西需要立刻和朋友分享,这些操作都需要进入客户端后选择聊天对象。能不能更简便一点,直接唤起和某人的聊天呢?只要应用支持,这是能够实现的。
检索的方式仍然是应用名 uri schemes,根据搜索到的提示,我在快捷方式创建向导的目标位置框中填入下面三个内容:
- mailto:hi@example.com:直接向某人发送邮件;
- tencent://Message/?Uin=QQ 号:打开和某人的 QQ 聊天。
经过笔者 查阅,微信 PC 端曾经支持类似的功能,但目前只能用weixin:唤起微信主界面。飞书亦 支持lark:开头的外部请求,但唤起聊天界面需要对方的 OpenID。
用例三:设置条目直达
作为 Windows 的特点之一,控制面板与更现代的设置两代同堂的局面已经持续很久。不难发现是它们俩可以相互跳转到某项功能的子界面。通过上一个节的第四部分,我们知道控制面板内的条目能用 GUID 等方式调用,那么更现代的设置是怎么做的呢?答案是 URI。
以ms-settings URI schemes为关键词检索,能发现微软给出的 官方文档,里面详细列举了以ms-settings开头的各类可用 URIs。
微软的许多 UWP 类型的系统应用,例如 Edge、商店、人脉,都提供了 URI Scheme 支持。对于一些变量,例如默认浏览器、默认视频播放器,Windows 也有对应的 URIs 可供调用。
本节汇总:在 Windows 中查询 URI Schemes
Windows 下想要知道哪些应用支持 URI 调用还是很简单的:URI Schemes 在注册表中被表述为 URL Protocol,要使用 URI 的应用必须在注册表中新建一个带有URL Protocol字符串的项2。我们可以通过浏览HKCR,来确认某应用的 URI Scheme 支持情况。如下图所示,能看到 BiliBili UWP 版注册了bilibili:
对于系统应用和 Windows Store 应用而言,我们也可以从 Windows设置 > 默认应用 > 按协议指定默认应用(Windows 11 改名为按链接类型指定默认应用)界面寻找已经被注册的各类 URI Schemes。不过此面板不会显示一些传统应用。
然而试图查阅到一个可用的 URI 相对而言较为困难。URI 方案后的行为、查询参数大部分情况下用于供开发者进行应用内跳转,不会暴露给用户。并且由于 安全问题,不少应用都限制了从外部直接调用程序功能。
所幸 URIs 往往会兼顾多平台的通用性,Windows、iOS、Android 系统上同一个应用的 URI Scheme 用法有可能是一样的。
要是不确定一个 URI Scheme 是否起作用,读者在将它们写入快捷方式之前,可以先使用资源管理器的地址栏做实验,效果符合预期再行动也不迟。
总结
就能力而言,快捷方式显然比不上脚本等手段。首先它的目标路径只能填一行,本文第二节虽然有用快捷方式执行多条命令的用例,但这显然不如脚本来得优雅;其次,快捷方式是静态的,想要为它加一些变量,例如打开 Obsidian 这一周的周志、用电报发送剪贴板内容,快捷方式实现起来就较为吃力,需要其他工具从旁辅助。
然而其优势也是很明显的——用起来简单方便。将目标写好,和我们交互的就只是一个带箭头的小图标。我们可以双击;可以将它们放在开始菜单中用于检索;还可以固定到任务栏,用 Windows + 数字键启用。快捷方式本身也是一个文件,它们可以被保存、备份、迁移,只要路径正确就能成功运行。
除了能用在快捷方式上,本文介绍的标识和 URI Schemes 也能用于 Windows 注册表、AutoHotkey,JS 脚本等其他地方,因而第二、三节的小结部分或许还有本文主旨之外的参考价值。
本文的意义仅在于提供应用的思路,揭示更多操作的可能性。真正适合自己的用法还需要读者自行探索。
以上就是雅风网?创建快捷方式软件(怎么设置快捷方式)的相关内容了,更多精彩请关注作者:雅风号SEO专员