开发者

How to determine the Windows default browser (at the top of the start menu)

How can I determine the Windows default browser (at the top of the start menu)?

I am using VB6 but can probably adapt other code no problem.

There are similar questions on Stack Overflow, but they seem to provide incorrect answers.

For instance the key HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\ lists both Internet Explorer and Firefox on my PC.

And getting the .html association fai开发者_运维百科ls for me as well, as HTML files are associated with IE but Firefox is my default browser.

Note that I don't want to actually open the browser, just get it's name.


  • When you click on a .html file, the browser that opens it is the one that has registered the .html extension.

  • When you open a http:// link (e.g. by typing it into the "Start->Run" box), the browser that opens is the one that has registered the HTTP protocol (although it's usually the same browser in both cases).

  • Whatever is displayed in Start Menu is not related to this.

HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) is the current user's handler for the HTTP protocol (which means "default browser"; NOTE: this is NOT the same thing as the .html default handler!).

However, it is possible to have a different browser at the top of Start Menu without changing the default. FYI, the browser executable name in Start menu is stored in HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default).


Tested in Windows 7 x64: This is a two step process. The user's default browser is in key:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid

Common browser Key Name:

  • IE: IE.AssocFile.HTM
  • FireFox: FirefoxHTML
  • Chrome: ChromeHTML
  • Opera: Opera.HTML

Replace <KEY NAME> below with one of the values above to find the executable:

HKCR\<KEY NAME>\shell\open\command

Autohotkey script to display the default browser path and executable:

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
} 


Default browsers are usually set on a per user basis. Have you tried HKEY_CURRENT_USER instead? Shows up on mine under there correctly.


reg QUERY HKEY_CLASSES_ROOT\htmlfile\shell\open\command /ve

you'll get something like

HKEY_CLASSES_ROOT\htmlfile\shell\open\command (Default) REG_SZ "C:\Program Files\Internet Explorer\iexplore.exe" %1

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜