![由 .htm 默认应用程序控制的一组 URL 协议的默认应用程序?](https://linux22.com/image/1529223/%E7%94%B1%20.htm%20%E9%BB%98%E8%AE%A4%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A7%E5%88%B6%E7%9A%84%E4%B8%80%E7%BB%84%20URL%20%E5%8D%8F%E8%AE%AE%E7%9A%84%E9%BB%98%E8%AE%A4%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我尝试设置我的电脑以在 IE 中打开 FTP 和文件 URL,并在 Chrome 中打开所有其他与浏览器相关的内容(http/https/html 等)。
我遇到了一个问题——在操作了几乎每一个我能找到的与默认应用程序相关的注册表项之后。
据我所知,处理“.htm”文件类型的应用程序也会打开所有其他类型和协议 - 无论它们的默认应用程序设置如何!
这是设计使然吗?难道不允许不同的应用打开不同的协议/文件类型吗?如果是这样,默认应用系统有什么意义?
有人可以解释一下这个问题吗?
编辑:我想我应该更具体一点。当然,我知道控制面板中的默认应用程序设置。然而,这正是我的观点。设置 FTP/文件/任何 URL 协议的默认应用程序,它将被设置为处理“htm”文件(不是 html,只是 htm)的应用程序覆盖。这也是 Windows 设置默认“浏览器”应用程序的方式。它自动将浏览器应用程序设置为 htm 应用程序。
更新
看来我被我正在测试的机制误导了。具体来说,是 Dynamics Ax 中带有按钮的 URL/超链接字段。
放置 file:// 或 UNC-paths,FTP/HTTP/HTTPS 全部使用处理 htm 的应用程序(或默认 Web 浏览器)打开。
按照@treintje 的建议使用命令提示符进行测试后,不同的文件类型和协议可以使用正确的应用程序打开。我怀疑 Dynamics Ax 在某种程度上调用了 urlmon.dll 或类似程序来“拦截”所有协议和文件类型,以确保默认 Web 浏览器处理链接。
答案1
以下注册表项似乎控制 URL 关联:
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
每个子键UrlAssociations包含一个名为“[protocolname]\UserChoice”的键。名为进程ID似乎指向类根注册表项,如 ftp/http/https/etc。
在我的系统中,安装了 Google Chrome,注册表值默认配置如下:
[...\UrlAssociations\ftp\UserChoice]
"ProgId"="ChromeHTML"
执行以下命令时确保 Internet Explorer 已启动:
start "" "ftp://localhost"
这进程ID注册表值必须按如下方式更改:
[...\UrlAssociations\ftp\UserChoice]
"ProgId"="ftp"
以及注册表项的默认值ftp\shell\open\命令:
[HKEY_CLASSES_ROOT\ftp\shell\open\command]
@="\"C:\\Program Files\\Internet Explorer\\\iexplore.exe\" \"%1\""
答案2
答案3
去设置>应用>默认应用程序> 向下滚动并点击按应用选择默认设置
然后从左侧找到您想要的浏览器。