如何在Windows 7中将默认浏览器更改为未列出的程序?


25

我经常使用多个浏览器,因此我编写了一个脚本,该脚本将在已经运行的任何浏览器(如果没有浏览器,则为Firefox)中打开页面。我想将此脚本设置为默认浏览器。当我转到“设置关联”对话框时,选择HTTP,然后单击“更改程序”,弹出的对话框不允许我选择除已安装的其中一种Web浏览器以外的任何内容。所有协议似乎都是这种情况(与文件扩展名不同,文件扩展名允许您从“其他程序”中选择或浏览未列出的程序)。Windows帮助对此一无所获,只是说要使用“浏览...”按钮,该按钮不可用。我什至尝试了第三方的“默认程序编辑器”,但似乎无法做到这一点。

有没有一种方法可以手动将脚本设置为默认脚本(可能是通过编辑注册表)?

Answers:


36

是的,您可以使用直接注册表操作来编写脚本。

简短答案

以下每拷贝到.reg文件(如firefox.regchrome.regie.reg),当你想切换(或者脚本运行它们reg.exe)。

对于Firefox:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"

对于Chrome:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"

对于IE9:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"

长答案

Windows将每个用户的标准协议默认注册存储在该UrlAssociations密钥下,该密钥位于

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations

与文件关联类似,链接可以有一个“默认程序”。这是一种引用UserChoice密钥的行话术语-ProgId下还有一个类似于文件关联的标准外壳注册http可以更改,但浏览器的近端配置是通过“默认程序”(有关此内容的其他评论,请参见底部) )。

我在这里谈论的是当您转到“控制面板”的“默认程序”部分来设置浏览器时要进行的更改:

控制面板中的协议默认程序

要直接在注册表中进行配置,首先让我们检查一下。在此屏幕快照中,我已导航至中的键regedit.exe,而Chrome是我的默认浏览器,由ChromeHTMLProgId值指定。

导航到regedit中的UrlAssociations子项

在单击链接时,切换显示的浏览器所需的最小更改是更改要更改的每个协议ProgIdUserChoice子项下的值(可能http并且https将是相同的,但是如果出于某些原因,您希望使每个在单独的浏览器中打开的浏览器中,您可以)。

现在,只需确定要在Firefox,IE和您可能要切换到的任何其他浏览器上使用的内容。如果您想以编程方式确定此内容,则可以通过Capabilities浏览器注册键(在Firefox中找到此地址)来完成:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet 是列出所有浏览器的位置,每个浏览器都应具有上述结构。

导航到regedit中的Capabilities键

从检查中可以看到,如果我想切换到Firefox,则可以使用FirefoxURLUrlAssociations中备份的ProgId值。

(但是,如果您不想像这样四处浏览,可以快速作弊:只需将您想要的任何浏览器设置为默认浏览器,然后刷新regedit即可查看该浏览器为UserChoice!设置的内容。)

我们需要做的就是将该键值更改为FirefoxURL,现在链接在Firefox中打开。之后,您可以单击链接或在控制面板中再次检查是否已注册正确的默认值:

在控制面板中仔细检查默认程序

现在,如果您一直在密切注意,您可能已经注意到所有这些缺陷:

  1. IE URLAssociations在的浏览器注册下没有子项StartMenuInternet,因此ProgId值从何而来?答:我不知道,至少没有更多的研究。它可能是硬编码的,或者是在我尚未找到的另一个密钥中找到的。

  2. Firefox的PROGID是其下的URLAssociationsFirefoxURL,但是当你点击在浏览器本身的选项进行注册,它使用FirefoxHTML的PROGID而不是!为什么?再次,我不知道。它们都起作用是因为它们都存在并指向Firefox。也许是故意的,但这可能只是无效的错误。

  3. 没有UserChoice默认程序时会发生什么?答:使用协议的“常规”文件关联(例如http)。这是在就像文件关联(标准PROGID地点找到HKCU\Software\ClassesHKLM\Software\Classes并在该视图HKCR)。我认为,至少Chrome在那里设置了信息,但至少在我的测试中,Firefox似乎没有。

  4. 我建议,如果要将其添加到“默认程序编辑器”中,则应在该应用程序的“ UserVoice反馈”页面上提出建议并对其进行投票。我有很好的权威,应用程序作者在决定如何度过他的开发时间时要注意该反馈!


2
感谢您的详细回复。如果我想将除已安装的浏览器以外的其他设置设置为默认HTTP处理程序,该怎么办?甚至可以将其设置为使用尚未安装到注册表中的东西吗?还是我需要为脚本创建注册表项?
摩根

2
@MorganMay您需要做的是删除UserChoice默认程序注册,以便使用“标准”文件关联密钥,如第3点所述。例如,查看默认值HKEY_CLASSES_ROOT\http\shell\open\command(如果重要,您可以HKEY_CURRENT_USER以标准用户身份写入相同的密钥)。应该只是设置应用程序路径以及浏览器需要的任何参数字符串(例如,-- %1我认为适用于Chrome)的问题
Factor Mystic

1
很高兴我读到最后。删除ProgId条目,然后在HKCR \ http \ shell \ open \ command中设置“默认”处理程序的组合
Brent,

-1

如果有其他人希望在Windows 10中将自定义项设置为默认协议处理程序,那么我认为我已经破解了。

这个问题的另一个答案使我离Clients\StartMenuInternet键更近了,我不知道如何在Windows 7中设置默认浏览器。但是,在几乎复制了Firefox的StartMenuInternet键之后,我的程序仍然没有出现在“设置”中应用程式。

使用Revo Uninstaller开始卸载firefox之后,取消firefox的卸载程序,然后让Revo扫描剩余的注册表项,我发现了另一个项:HKLM\SOFTWARE\RegisteredApplications。这似乎存储了所有已注册的程序,这些程序可以告知Windows其功能。

因此,在设置StartMenuInternet密钥后,添加一个密钥HKLM\SOFTWARE\RegisteredApplications指向Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities-是的,完全一样,从以下开始Software\

regedit的屏幕截图(我只有10次回复才能嵌入图片...)


-1

为了使您的程序(YName.exe)被认为是浏览器,需要注册它:

1)... StartMenuInternet-如上所述,

HKCU \ Software \ Clients \ StartMenuInternet \ YName \ Capabilities \ URLAssociations

http = YNameURL

https = YNameURL

2)HKCU \软件\ RegisteredApplications-如上所述:

YName =软件\客户端\ StartMenuInternet \ YName \功能

3)HKCU \ Software \ Classes \ YNameURL \ shell \ open \ command

@ =路径\ YName.exe

4)HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \ command

@ =路径\ YName.exe



1
欢迎来到超级用户!请注意,答案必须全部使用英语。
Glorfindel

(1)  超级用户是仅英语的站点。请删除答案的非英语部分。(2)每个答案都应该能够独立(合理)。这不是。参考其他答案时,答案不应说“如上所述”。请对其进行编辑,以使其本身有意义。只要您愿意,可以复制其他答案的一部分。(3)这句话大部分似乎已经讲完了。请明确说明您要添加哪些新信息。
斯科特,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.