是的,您可以使用直接注册表操作来编写脚本。
简短答案
以下每拷贝到.reg
文件(如firefox.reg
,chrome.reg
,ie.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是我的默认浏览器,由ChromeHTML
ProgId值指定。
在单击链接时,切换显示的浏览器所需的最小更改是更改要更改的每个协议ProgId
的UserChoice
子项下的值(可能http
并且https
将是相同的,但是如果出于某些原因,您希望使每个在单独的浏览器中打开的浏览器中,您可以)。
现在,只需确定要在Firefox,IE和您可能要切换到的任何其他浏览器上使用的内容。如果您想以编程方式确定此内容,则可以通过Capabilities
浏览器注册键(在Firefox中找到此地址)来完成:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
是列出所有浏览器的位置,每个浏览器都应具有上述结构。
从检查中可以看到,如果我想切换到Firefox,则可以使用FirefoxURL
UrlAssociations中备份的ProgId值。
(但是,如果您不想像这样四处浏览,可以快速作弊:只需将您想要的任何浏览器设置为默认浏览器,然后刷新regedit即可查看该浏览器为UserChoice
!设置的内容。)
我们需要做的就是将该键值更改为FirefoxURL
,现在链接在Firefox中打开。之后,您可以单击链接或在控制面板中再次检查是否已注册正确的默认值:
现在,如果您一直在密切注意,您可能已经注意到所有这些缺陷:
IE URLAssociations
在的浏览器注册下没有子项StartMenuInternet
,因此ProgId值从何而来?答:我不知道,至少没有更多的研究。它可能是硬编码的,或者是在我尚未找到的另一个密钥中找到的。
Firefox的PROGID是其下的URLAssociations
是FirefoxURL
,但是当你点击在浏览器本身的选项进行注册,它使用FirefoxHTML
的PROGID而不是!为什么?再次,我不知道。它们都起作用是因为它们都存在并指向Firefox。也许是故意的,但这可能只是无效的错误。
没有UserChoice
默认程序时会发生什么?答:使用协议的“常规”文件关联(例如http
)。这是在就像文件关联(标准PROGID地点找到HKCU\Software\Classes
,HKLM\Software\Classes
并在该视图HKCR
)。我认为,至少Chrome在那里设置了信息,但至少在我的测试中,Firefox似乎没有。
我建议,如果要将其添加到“默认程序编辑器”中,则应在该应用程序的“ UserVoice反馈”页面上提出建议并对其进行投票。我有很好的权威,应用程序作者在决定如何度过他的开发时间时要注意该反馈!