网页上通过超链接直接打开PC应用

发布时间:2021-12-28

有时候我们会发现有些网页可以直接打开本地应用,比如在百度网盘网页版下载文件时,会自动打开本地的百度网盘软件。Visual Studio Code打开浏览器认证后也会转到本地引用,Unity官网打开本地的Unity Hub应用进行Unity的下载和更新等。

以下内容只针对Windows OS,其它系统上无法测试,当然你要尝试也没问题

原理解析

其实要实现网页上调起本地应用这个功能也不复杂,主要就是依赖于自定义协议。

当点击了网页中的某个超链接时,浏览器会根据协议去寻找对应的调用,最基础的 http 协议就是使用 http:// 来指定,浏览器接收到地址栏的输入后,进行一个http请求,其他的还有 ws:// 以及他俩的安全版本 https://wss://等。

所以我们只要给浏览器知道我们自定义的协议就行了,比如我有一个 sc:// 协议,浏览器根据这个协议打开对应的SC应用。其实随便一个都行,只要把能解析 sc 协议就行(不是)

具体实现

要想实现自定义协议,操作系统又是 Windows OS,那必然是使用注册表来实现。

注册表有好几项,本次相关的配置位于 HEY_CLASSES_ROOT 项下面,HEY_CLASSES_ROOT 中存放着应用启动的相关信息,其中就包括了通过自定义协议来启动应用。

所以只需要在 HEY_CLASSES_ROOT 下面新建一个 sc 项,默认键内容为:URL:sc,还需要一个空键,键名:URL Protocol 来指定这是一个协议,然后添加子健 shell=>open=>commandcommand默认键内容为要打开的应用所在位置。

一个自定义协议就完成了,在网页中添加一个超链接 sc://123,点击即可打开对应的应用。

其他阅读

游记 | 山城重庆

最近都在忙着推进中物视的事情,还挺忙的,最近昆明的天气比较难受,工作日都是晴天,到了周末就下雨。刚好碰上在重庆有一个会议需要参加,趁着这个机会就去重庆旅游。

查看原文

命令行打包.net项目

.net 日常开发中,我们接触最多的就是 Visual Studio ,它是微软为了 .net 平台专门打造的 IDE (集成开发环境),为整个 .net 平台开发带来了无与伦比的图形化体验,但是有时候,我们也会遇到需要通过命令行来生成 .net 项目的情况,本文会介绍几种命令行打包的姿势。

查看原文

Nginx代理AspNetCore跨域问题

在前后端分离开发中,经常出现跨域的问题,本文是记录使用Nginx来反向代理AspNetCore应用时的跨域问题。

查看原文

vscode Material Design Theme

Material Design Theme 是由猪头少年(scung-cn)开发的一套基于 Material Design 设计语言的 Visual Studio Code 主题插件,可以在扩展市场上直接下载安装。

查看原文

记录中文名WPF应用无法启动

今年开春,突然就收到部分用户反馈软件无法启动的问题,沟通后远程查看发现应用刚启动就直接崩溃了,在Windows的事件查看器可以看到应用的崩溃日志,发现是 ucrtbase.dll 模块崩溃,错误代码 0x0000409

查看原文