如何确定Windows默认浏览器(在“开始”菜单的顶部)

如何确定Windows默认浏览器(在“开始”菜单的顶部),windows,browser,vb6,Windows,Browser,Vb6,如何确定Windows默认浏览器(位于“开始”菜单的顶部) 我正在使用VB6,但可能可以适应其他代码没有问题 关于堆栈溢出也有类似的问题,但它们似乎提供了错误的答案 例如,HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\键列出了我电脑上的Internet Explorer和Firefox 获取.html关联对我来说也是失败的,因为html文件与IE关联,但Firefox是我的默认浏览器 请注意,我不想实际打开浏览器,只想知道它的名称。默

如何确定Windows默认浏览器(位于“开始”菜单的顶部)

我正在使用VB6,但可能可以适应其他代码没有问题

关于堆栈溢出也有类似的问题,但它们似乎提供了错误的答案

例如,HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\键列出了我电脑上的Internet Explorer和Firefox

获取.html关联对我来说也是失败的,因为html文件与IE关联,但Firefox是我的默认浏览器


请注意,我不想实际打开浏览器,只想知道它的名称。

默认浏览器通常是按用户设置的。你试过HKEY_当前用户吗?正确显示在我的下方。

HKEY\u CURRENT\u USER\Software\Classes\http\shell\open\command\(默认)
是当前用户的http协议处理程序(表示“默认浏览器”;注意:这与
.html
默认处理程序不同!)

但是,可以在“开始”菜单顶部使用不同的浏览器,而无需更改默认设置。仅供参考,“开始”菜单中的浏览器可执行文件名称存储在Windows 7 x64中测试的
HKEY\U CURRENT\U USER\Software\Client\StartMenuInternet\(默认)

: 这是一个分两步的过程。用户的默认浏览器位于键:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid
通用浏览器键名称:

  • IE:IE.AssocFile.HTM
  • FireFox:FirefoxHTML
  • Chrome:ChromeHTML
  • Opera:Opera.HTML
将下面的
替换为上面的一个值以查找可执行文件:

HKCR\<KEY NAME>\shell\open\command
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
} 

谢谢看来我问错问题了。单击HTML文件时,打开的浏览器是已注册HTTP协议的浏览器,而不是“开始”菜单上的浏览器。这解决了我的问题。@soupagain:事实上,没有。当你点击一个.html文件时,打开它的浏览器就是注册了.html扩展名的浏览器。当您打开http://链接时(例如,通过在“开始->运行”框中键入该链接),打开的浏览器就是已注册http协议的浏览器(尽管在这两种情况下通常是同一浏览器)。“开始”菜单中显示的内容与此无关,这是正确的。是的,我的意思是这样的,但你解释得更好。在Windows 10中,
HKCU\Software\Classes\http
(和
https
)键为空。打开http的默认浏览器(即通过运行对话框)由中的子项定义。该注册表项为我提供firefox,但我的默认浏览器为chrome:(知道这与@Piskvor的答案有什么区别吗?他的答案似乎适用于Windows 8.1 x64(假设它也能在Windows7上运行,也许是因为它是一种升级?)在Windows 10上,这是我唯一可以使用的答案,因为Piskvors答案中的子键不存在。如果在中更改默认浏览器,
.html\UserChoice
.htm\UserChoice
子键的
ProgId
值也会更改(可能在其他位置)。