Chrome浏览器file协议限制绕过:自定义URL协议实现相关问题咨询
自定义URL协议实现本地路径打开问题解答
疑问逐一解答
- 问题1:
"URL Protocol"=""是否是协议名称的定义位置?是否需要设置为"URL Protocol"="ih-link"?还是需要替换注册表路径中的IntranetFileLauncher?
解答:URL Protocol不是协议名称的定义位置,它只是一个标记项,作用是告知Windows当前注册表项对应的是自定义URL协议而非普通文件关联,保持空值""即可不需要修改。协议名称由HKEY_CLASSES_ROOT\后的根节点名称决定,你需要把原有方案路径中的IntranetFileLauncher替换为你自定义的ih-link,即可完成协议名的定义。 - 问题2:配置中涉及explorer.exe的部分是否仅用于指定该协议的显示图标?
解答:不是。涉及explorer.exe的配置分为两处,作用完全不同:[HKEY_CLASSES_ROOT\ih-link\DefaultIcon]项下的explorer.exe路径仅用于指定该协议链接在浏览器中显示的图标[HKEY_CLASSES_ROOT\ih-link\shell\open\command]项下的explorer.exe是点击协议链接时实际调用的执行程序,负责打开目标路径
- 问题3:注册表路径
[HKEY_CLASSES_ROOT\IntranetFileLauncher\shell]和[HKEY_CLASSES_ROOT\IntranetFileLauncher\shell\open]的作用分别是什么?
解答:shell项是该协议所有可执行动作的根配置节点,你可以在这里添加多个动作(比如打开、打印等),它的默认值可设置默认触发的动作名称shell\open是具体的「打开」动作的配置节点,对应的子项command用来定义触发这个动作时要执行的系统命令
- 问题4:方案末尾的配置逻辑是否是剥离URL中的协议头,将剩余的文件路径传递给explorer打开?路径分隔符是否需要用
\而非/?
解答:是的,配置的核心逻辑就是先剥离ih-link:前缀,把剩余的路径参数传递给explorer.exe执行。路径分隔符方面,Windows资源管理器本身兼容/和\两种格式,但为了避免特殊场景下的解析异常,建议优先使用Windows标准的\作为分隔符,网页生成链接时可以提前把路径中的/替换为\再拼接协议头。
操作提醒
修改注册表前可以先右键点击HKEY_CLASSES_ROOT对应要修改的项,选择「导出」备份原始配置,出现异常时双击备份的reg文件即可恢复。
内容的提问来源于stack exchange,提问作者Anthony LoPrimo
相关产品推荐
相关产品推荐

