如何在注册表协议处理程序中直接处理%1参数去除协议前缀
直接在注册表处理协议唤起参数的方案
不用中间批处理,直接修改注册表的命令配置就能解决,核心是利用Windows命令行的字符串截取语法预处理参数:
把
shell\open\command\(Default)的原有值替换成:cmd /c ""path-to-my-app\my-app.exe" "%~1:~14%""拆解一下这个配置的逻辑:
cmd /c:调用命令提示符执行后续命令后自动退出%~1:去除原始参数%1(即my-protocol://my-info-to-pass)的外层引号,避免截取时出现语法问题:~14:跳过参数字符串的前14个字符——my-protocol://刚好是14个字符,跳过之后剩下的就是你需要的my-info-to-pass- 嵌套双引号:确保应用路径包含空格时能被正确识别,同时让命令提示符可以正确解析整个命令
注意事项:
- 如果你的协议前缀长度不同(比如是
my-protocol:不带//),需要自行准确计算字符数,调整~14中的数字 - 输入注册表值时要注意引号的嵌套格式,写错会导致应用无法正常唤起
- 如果你的协议前缀长度不同(比如是
内容的提问来源于stack exchange,提问作者Cyber-Doc
相关产品推荐
相关产品推荐

