如何为你的 Windows 应用程序关联 URL 协议,以便在浏览器中也能打开你的应用

栏目: 后端 · 前端 · 发布时间: 6年前

内容简介:移动程序关联 URL 是常态,桌面应用程序其实也早就支持关联 URL 以便在浏览器中打开。当我们的程序关联了一个 URL 协议之后,开发的网站上就可以通过这个 URL 与程序进行互操作,这很互联网。对于 Windows 桌面应用来说,关联一个 URL 协议是通过修改注册表来实现的。本文介绍如何为你的应用关联一个 URL 协议。一个常用的 URL 协议是这样子的:https://walterlv.com。前面的

移动程序关联 URL 是常态,桌面应用程序其实也早就支持关联 URL 以便在浏览器中打开。当我们的程序关联了一个 URL 协议之后,开发的网站上就可以通过这个 URL 与程序进行互操作,这很互联网。

对于 Windows 桌面应用来说,关联一个 URL 协议是通过修改注册表来实现的。本文介绍如何为你的应用关联一个 URL 协议。

URL 协议

一个常用的 URL 协议是这样子的:https://walterlv.com。前面的 https 就是协议名称,而 https:// 放在一起就是在使用 https 协议。

本文我们将定义一个 walterlv 协议,然后关联到我们本地安装的一个桌面应用程序上,然后使用 walterlv://open?id=1 来打开一个 id 为 1 的逗比。

注册一个 URL 协议

要在 Windows 系统上注册一个 URL 协议,你只需要两个步骤:

  • 好好想一个协议名称
  • 在注册表中添加协议关联

好好想一个协议名称

就知道你想不出来名字,于是可以使用命名生成工具:Whitman,其原理可阅读 冷算法:自动生成代码标识符(类名、方法名、变量名) - 吕毅

然后本文使用协议名称 walterlv

在注册表中添加协议关联

你需要在注册表的 HKEY_LOCAL_MACHINE\Software\Classes 或者 HKEY_CURRENT_USER\Software\Classes 添加一些子键:

HKEY_CURRENT_USER\Software\Classes
    walterlv
        (Default) = 吕毅的特殊链接
        URL Protocol = WalterlvProtocol
        Shell
            Open
                Command
                    (Default) = "C:\Users\lvyi\AppData\Local\Walterlv.Foo\Walterlv.Windows.Association.exe" "%1"

Classes 中的那个根键 walterlv 就是我们的协议名称,也就是 walterlv:// 的那个前缀。

walterlv 根键 中的 (Default) 属性给出的是链接的名称;如果后面没有设置打开方式(也就是那个 Shell\Open\Command )的话,那么在 Chrome 里打开就会显示为那个名称(如下图)。

如何为你的 Windows 应用程序关联 URL 协议,以便在浏览器中也能打开你的应用

URL Protocol 这个注册表项是必须存在的,但里面的值是什么其实无所谓。这只是表示 walterlv 是一个协议。

接下来 Shell\Open\Command 中的 (Default) 值设置为一个打开此协议用的命令行。其中路径后面的 "%1" 是文件资源管理器传入的参数,其实就是文件的完整路径。我们加上了引号是避免解析命令行的时候把包含空格的路径拆成了多个参数。

在正确填写了注册表的以上内容之后,在 Chrome 里打开此链接将看到以下 URL 打开提示:

如何为你的 Windows 应用程序关联 URL 协议,以便在浏览器中也能打开你的应用

关于注册表路径的说明:

HKEY_LOCAL_MACHINE 主键是此计算机上的所有用户共享的注册表键值,而 HKEY_CURRENT_USER 是当前用户使用的注册表键值。而我们在注册表的 HKEY_CLASSES_ROOT 中也可以看到跟 HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes 中一样的文件关联项,是因为 HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes 合并之后的一个视图,其中用户键值会覆盖此计算机上的相同键值。

也就是说,如果你试图修改文件关联,那么需要去 HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes 中,但如果只是去查看文件关联的情况,则只需要去 HKEY_CLASSES_ROOT 中。

写入计算机范围内的注册表项需要管理员权限,而写入用户范围内的注册表项不需要管理员权限;你可以酌情选用。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与应用

算法设计与应用

迈克尔 T. 古德里奇(Michael T. Goodrich)、罗伯特·塔马契亚(Roberto Tamas / 乔海燕、李悫炜、王烁程 / 机械工业出版社 / 2017-11-20 / CNY 139.00

本书全面系统地介绍算法设计和算法应用的各个领域,内容涵盖经典数据结构、经典算法、算法分析方法、算法设计方法以及算法在各个领域的应用,还包含一些高级主题。本书采用应用驱动的方法引入各章内容,内容编排清晰合理,讲解由浅入深。此外,各章都附有巩固练习、创新练习和应用练习三种类型的题目,为读者理解和掌握算法设计和应用提供了很好的素材。 本书可作为高等院校计算机及相关专业“数据结构和算法”课程的本科生......一起来看看 《算法设计与应用》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码