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

Windows自定义协议处理器:注册表配置后脚本无法触发求助

排查Windows自定义协议触发失败的问题

我之前也踩过类似的自定义协议配置坑,结合你的情况,咱们一步步来定位解决:

1. 核心问题:内置命令未通过CMD执行

你当前的command注册表项直接写了echo %1 > C:\\logs\\alive.txt,但echo是CMD的内置命令,系统无法直接将其识别为可执行程序,必须通过cmd /c来调用执行。

修改command项的内容为:

@="\"cmd /c echo %1 > C:\\logs\\alive.txt\""

这里的cmd /c表示执行后续命令后自动关闭CMD窗口,确保内置命令能被正确解析运行。

2. 先确保目标目录存在

如果C:\logs文件夹不存在,echo命令无法写入文件,而且不会给出任何错误提示(这是最容易被忽略的细节)。你可以先手动创建C:\logs,或者修改命令让它自动创建目录:

@="\"cmd /c mkdir C:\\logs 2>nul && echo %1 > C:\\logs\\alive.txt\""

2>nul是用来屏蔽目录已存在时的重复创建提示,避免多余输出干扰。

3. 验证注册表完整性

检查所有注册表项是否正确创建,没有拼写错误:

  • HKEY_CLASSES_ROOT\customprotocol下:
    • URL Protocol值为空字符串
    • 默认值@为URL:customprotocol
  • 确保shell -> open -> command的子项层级完整,没有遗漏或写错名称

4. 简化测试方式

不要只依赖浏览器测试,先通过**运行窗口(Win+R)**输入customprotocol://test来验证。如果运行窗口能触发文件创建,说明注册表配置没问题,再去排查浏览器的权限或设置;如果还是没反应,继续聚焦注册表和命令本身。

5. 权限问题排查

如果写入C:\logs失败,可能是系统权限限制。可以尝试把日志文件写到用户个人目录,比如:

@="\"cmd /c echo %1 > C:\\Users\\%USERNAME%\\logs\\alive.txt\""

用户目录的写入权限通常更宽松,能避免管理员权限带来的执行障碍。

完整的注册表示例

你可以直接导入这个修正后的注册表文件(记得先确认目录逻辑符合你的需求):

Windows Registry Editor Version 5.00

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

[HKEY_CLASSES_ROOT\customprotocol\shell]

[HKEY_CLASSES_ROOT\customprotocol\shell\open]

[HKEY_CLASSES_ROOT\customprotocol\shell\open\command]
@="\"cmd /c mkdir C:\\logs 2>nul && echo %1 > C:\\logs\\alive.txt\""

按以上步骤调整后,应该就能正常触发命令并创建日志文件了。之后你再替换成目标脚本"C:\\run_protocol.bat %1"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:27:43