如何配置URL Protocol使启动的应用使用自身目录而非system32为工作目录
解决方案
你可以通过调整URL Protocol关联的启动命令实现需求,无需修改原有批处理文件:
操作步骤
- 修改注册表中
HKEY_CLASSES_ROOT\ProtoTest\shell\open\command的默认值,将直接指向批处理的配置改为通过cmd.exe先切换工作目录再启动批处理。 - 调整后的完整注册脚本如下:
@echo off reg add HKEY_CLASSES_ROOT\ProtoTest /t REG_SZ /d "My Description" /f reg add HKEY_CLASSES_ROOT\ProtoTest /v "URL Protocol" /t REG_SZ /d "" /f reg add HKEY_CLASSES_ROOT\ProtoTest\shell /f reg add HKEY_CLASSES_ROOT\ProtoTest\shell\open /f reg add HKEY_CLASSES_ROOT\ProtoTest\shell\open\command /t REG_SZ /d "cmd.exe /c ""cd /d C:\TestFolder && C:\TestFolder\showPath.bat""" /f pause
- 命令参数说明:
cmd.exe /c:执行指定命令后自动关闭命令行窗口cd /d C:\TestFolder:将当前工作目录切换为批处理所在的C:\TestFolder,/d参数支持跨盘符切换目录&&:保证前一条目录切换命令执行成功后,再启动目标批处理
效果验证
重新执行上述注册脚本更新注册表配置后,再通过Chrome访问ProtoTest://启动批处理,打印的工作目录即为批处理自身所在的C:\TestFolder。
内容的提问来源于stack exchange,提问作者user1066231
相关产品推荐
相关产品推荐

