我怎样才能确定Windows的默认浏览器(在开始菜单的顶部)?
我使用VB6,但也可能适应其他代码没有问题。
有堆栈溢出类似的问题,但他们似乎提供了不正确的答案。
例如,键HKEY_LOCAL_MACHINE \ Software \ Clients \ StartMenuInternet \列出我的电脑上的Internet Explorer和Firefox。
而获取.html关联也会失败,因为HTML文件与IE关联,但Firefox是我的默认浏览器。
请注意,我不想实际打开浏览器,只是得到它的名字。
HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default)
是HTTP协议的当前用户处理程序(意思是“默认浏览器”;注意:这与.html
默认处理程序不同) 。
但是,可以在“开始”菜单的顶部使用不同的浏览器,而不更改默认值。 仅供参考,“开始”菜单中的浏览器可执行文件名称存储在HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default)
。
在Windows 7 x64中测试:这是一个两步的过程。 用户的默认浏览器是关键的:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid
常用浏览器按键名称:
用下面的值替换下面的<KEY NAME>
来查找可执行文件:
HKCR\<KEY NAME>\shell\open\command
显示默认浏览器路径和可执行文件的Autohotkey脚本:
MsgBox % "Default browser: " Browser() Browser() { ; Find the Registry key name for the default browser RegRead, BrowserKeyName, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice, Progid ; Find the executable command associated with the above Registry key RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\command ; The above RegRead will return the path and executable name of the brower contained within qoutes and optional parameters ; We only want the text contained inside the first set of quotes which is the path and executable ; Find the ending quote position (we know the beginning quote is in position 0 so start searching at position 1) StringGetPos, pos, BrowserFullCommand, ",,1 ; Decrement by one for the StringMid to work correctly pos := --pos ; Extract and return the path and executable of the browser StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos% Return BrowserPathandEXE }
默认浏览器通常是以每个用户为基础设置的。 您是否尝试过使用HKEY_CURRENT_USER? 正确显示在我的下面。