Как определить браузер по умолчанию в Windows (в верхней части меню Пуск )

Как определить браузер Windows по умолчанию (в верхней части меню "Пуск")?

Я использую VB6, но, вероятно, могу адаптировать другой код без проблем.

есть аналогичные вопросы о переполнении стека, но они, похоже, дают неправильные ответы.

например, ключ HKEY_LOCAL_MACHINESoftwareClientsStartMenuInternet содержит как Internet Explorer, так и Firefox на моем ПК.

и получение .html ассоциация терпит неудачу для меня, а также, как HTML-файлы связаны с IE, но Firefox - это мой браузер по умолчанию.

обратите внимание, что я не хочу открывать браузер, просто получить его имя.

3 ответов


HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) является обработчиком текущего пользователя для протокола HTTP (что означает "браузер по умолчанию"; Примечание: это не то же самое, что .html обработчик по умолчанию!).

тем не менее, можно иметь другой браузер в верхней части меню "Пуск" без изменения значения по умолчанию. FYI, исполняемое имя браузера в меню "Пуск" хранится в HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default).


протестировано в Windows 7 x64: Это двухэтапный процесс. Браузер по умолчанию в ключе:

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

общее имя ключа браузера:

  • Т. Е.: Т. Е..AssocFile.НТМ
  • FireFox: FirefoxHTML
  • Chrome: ChromeHTML
  • Опера: Опера.HTML-код

заменить <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 вместо этого? Появляется на моем под ним правильно.