Chrome及Edge打开本地链接问题:PowerShell自定义协议配置求助
自定义协议打开本地文件解决方案
问题根因
你之前的配置无法打开具体文件主要有三个问题:
- 协议头截取位置错误,
Substring(10)没有完整去掉MySoftware://前缀,导致传入的路径开头残留://,资源管理器对文件夹路径可自动容错,但无法识别带前缀的文件路径 - 未处理URL编码,浏览器会将路径中的空格、中文、特殊符号转为%XX格式的编码内容,直接调用会无法找到文件
- 替换为
Invoke-Item时未处理注册表中的PowerShell转义规则,也没有加必要的启动参数避免干扰
正确配置
你可以直接将以下内容保存为.reg格式的文件,双击导入注册表即可:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\MySoftware] @="URL:MySoftware Protocol" "URL Protocol"="" [HKEY_CURRENT_USER\Software\Classes\MySoftware\shell] [HKEY_CURRENT_USER\Software\Classes\MySoftware\shell\open] [HKEY_CURRENT_USER\Software\Classes\MySoftware\shell\open\command] @="powershell.exe -NoProfile -WindowStyle Hidden -Command \"$val = '%1'; $val = [System.Web.HttpUtility]::UrlDecode($val); $path = $val.Substring(13).TrimStart('/').TrimEnd('/').Replace('/', '\'); Invoke-Item -Path $path -ErrorAction SilentlyContinue\""
配置说明
- 写入
HKEY_CURRENT_USER节点无需管理员权限,符合企业环境权限要求 -NoProfile参数跳过加载PowerShell用户配置,大幅提升启动速度-WindowStyle Hidden参数隐藏PowerShell黑框弹窗,无额外交互干扰- 新增的URL解码逻辑兼容带空格、中文、特殊字符的路径
TrimStart('/')兼容MySoftware:///c:\xxx这类多斜杠的协议格式- 导入后无需重启系统,直接点击
MySoftware://开头的链接即可测试,会自动调用系统默认程序打开对应文件/文件夹
内容的提问来源于stack exchange,提问作者Jammy
相关产品推荐
相关产品推荐

