Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme

Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme

What

想不想在浏览器打开/控制你的电脑应用?

比如我在浏览器地址栏输入wegame://后回车会提示是否打开URL:wegame Portocol

wegame:/

若出现了始终允许选项,你甚至可以写一个Web界面,在始终允许后通过Web控制你的本地程序。

这是怎么实现的呢?很简单,我教你啊!

要张脑子了

想要了解这种协议,可以GoogleURL Scheme

  • 在Windows和MacOS上,你可以使用这种协议打开或控制本地应用(也许Linux也行?)
  • 在Android和iOS上,你可以使用这种协议在应用之间跳转(并传参)

比如某开源音乐播放器就支持通过Scheme URL来控制音乐的播放。

有了这种协议,你也可以在用户访问你的某个软件的官网时,实现“在xx软件中打开并查看”的功能。

本篇只以Windows为例,演示如何在不需要用户的管理员权限的情况下,为你的应用创建URL Scheme。

How

只需要向注册表HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes中添加一些子键。其中HKEY_LOCAL_MACHINE对所有用户生效,但需要管理员权限。现在以只对当前用户生效的不需要管理员权限的HKEY_CURRENT_USER为例:(这两个位置叫“HKEY_CLASSES_ROOT”)

首先Win+Rregedit回车打开注册表,进入到HKEY_CURRENT_USER\Software\Classes的位置:

进入HKEY_CLASSES_ROOT

Classes右键→新建项重命名新建的项(文件夹)。这里的名字就是你待会儿在浏览器中输入的scheme。这里以LetTest为例。

LetTest文件夹空白处双击默认并修改默认值,这里的值就是浏览器中显示的内容(就像WeGame显示的URL:wegame Portocol)。这里以URL Scheme测试为例。(其实这里的值写成URL:<myapp> Protocol比较规范)

LetTest文件夹上或空白处右键→新建→字符串值,名字为URL Protocol(不能更改),值一般为你的可执行程序的位置。这里以F:\OtherApps\Program\Python\Python\python.exe为例。(其实这里写什么都能正常执行,但建议这么写)

next step

LetTest文件夹上依次建立shell→open→command文件夹,其中shellopen的默认值都为空,command的值为你要执行的命令。

这里的命令一般为"可执行程序" "%1"(其中"%1"为浏览器等传递的参数)。一般为"C:\LetMeFly.exe" "%1",但是这里以一个简单的Python脚本为例,写为"F:\OtherApps\Program\Python\Python\python.exe" "F:\OtherApps\Program\VsCode\Code\TrySchemeURL\test.py" "%1"。(其中Python.exe的位置和test.py的位置都需要根据实际需求来调整)

next step 2

F:\OtherApps\Program\VsCode\Code\TrySchemeURL目录下(或其他位置)新建test.py,写入以下内容:

import sys
import os

print(sys.argv)
os.system('pause')

在浏览器中输入LetTest://hello/world/?a=1回车,大功告成!

原神启动!

按任意键进入异世界

关于这里为什么显示的是Python而不是URL Scheme测试,我发现command为一个文件的位置时会显示文件名,否则会显示你起的名字。

你还可以为这个Scheme设置一个图标(虽然在浏览器中也不会显示):

LetTest下新建DefaultIcon项,默认值为图标路径。

icon?

这描述太详细(太长)了,能否可视化一点

没问题,结构如下:

HKEY_CURRENT_USER\Software\Classes
    LetTest
        (Default) = URL Scheme测试
        URL Protocol = 
        DefaultIcon
            (Default) = "C:\favicon.ico"
        Shell
            Open
                Command
                    (Default) = "F:\OtherApps\Program\Python\Python\python.exe" "F:\OtherApps\Program\VsCode\Code\TrySchemeURL\test.py" "%1"

导出的.reg文件为:(双击即可食用)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\LetTest]
@="URL Scheme测试"
"URL Protocol"="F:\\OtherApps\\Program\\Python\\Python\\python.exe"

[HKEY_CURRENT_USER\SOFTWARE\Classes\LetTest\DefaultIcon]
@="F:\\OtherApps\\Program\\Python\\Python\\python.exe"

[HKEY_CURRENT_USER\SOFTWARE\Classes\LetTest\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\LetTest\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\LetTest\shell\open\command]
@="\"F:\\OtherApps\\Program\\Python\\Python\\python.exe\" \"F:\\OtherApps\\Program\\VsCode\\Code\\TrySchemeURL\\test.py\" \"%1\""

参考

原创不易,转载经作者同意后请附上原文链接哦~
https://letmefly.blog.csdn.net/article/details/136083203

相关推荐

  1. 创建第一个Windows程序

    2024-02-09 11:12:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-09 11:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-09 11:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-09 11:12:01       82 阅读
  4. Python语言-面向对象

    2024-02-09 11:12:01       91 阅读

热门阅读

  1. axios-retry 响应异常

    2024-02-09 11:12:01       47 阅读
  2. 梯度提升树系列3——利用GBDT进行回归分析

    2024-02-09 11:12:01       53 阅读
  3. office文件转pdf在线预览

    2024-02-09 11:12:01       37 阅读
  4. LeetCode魔塔游戏

    2024-02-09 11:12:01       48 阅读
  5. SQL面试题挑战15:sql实现分钟级的趋势图

    2024-02-09 11:12:01       54 阅读
  6. Debezium发布历史117

    2024-02-09 11:12:01       47 阅读
  7. Android studio 六大基本布局详解

    2024-02-09 11:12:01       49 阅读
  8. Acwing143最大异或对

    2024-02-09 11:12:01       49 阅读