You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义URL协议多命令注册异常:所有调用均启动写字板

问题原因及解决方法

你的注册表配置错误源于对自定义协议动词触发逻辑的误解,导致所有调用都会启动写字板:

  • mycustomprot://launch这类写法不会触发shell分支下的launch动词,而是把整个URL作为参数%1传给协议的默认处理命令。
  • 当[HKEY_CLASSES_ROOT\mycustomprot\shell]未设置默认值时,Windows会自动选择字母顺序最靠前的动词作为默认动作,你的配置里edit(以e开头)排在launch和run之前,所以所有调用都会执行edit对应的写字板命令。

解决方法一:解析URL路径区分动作(适合直接输入URL调用的场景)

删除shell下的edit、launch、run子项,改用脚本解析URL中的指令,再执行对应程序:

  1. 修改注册表为:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\mycustomprot]
@="URL:mycustomprot Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\mycustomprot\DefaultIcon]
@="\"C:\\path\\to\\icon.ico\""

[HKEY_CLASSES_ROOT\mycustomprot\shell]
@="open"

[HKEY_CLASSES_ROOT\mycustomprot\shell\open\command]
@="\"C:\\path\\to\\prot_handler.bat\" \"%1\""
  1. 在指定路径创建prot_handler.bat脚本,内容如下:
@echo off
set "url=%~1"
set "action=%url:*://=%"

if "%action%"=="launch" start "" "%windir%\system32\SnippingTool.exe"
if "%action%"=="run" start "" "C:\Program Files\AnyDesk\AnyDesk.exe"
if "%action%"=="edit" start "" "C:\Program Files\Windows NT\Accessories\wordpad.exe"

解决方法二:设置默认动词(适合右键选择动作的场景)

如果希望保留多个动词选项,给shell项设置默认值,指定默认执行的动作:

[HKEY_CLASSES_ROOT\mycustomprot\shell]
@="launch"

注:这种方式下,直接输入URL只会执行默认动词的命令,无法通过URL路径切换动作,只能在右键点击协议链接时选择其他动词。


内容的提问来源于stack exchange,提问作者alwaysVBNET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:38:16