2010-02-01 16 views
5

¿Cómo puedo determinar el navegador predeterminado de Windows (en la parte superior del menú de inicio)?Cómo determinar el navegador predeterminado de Windows (en la parte superior del menú de inicio)

Estoy usando VB6 pero probablemente pueda adaptar otro código sin problema.

Hay preguntas similares sobre el desbordamiento de pila, pero parecen proporcionar respuestas incorrectas.

Por ejemplo, la clave HKEY_LOCAL_MACHINE \ Software \ Clients \ StartMenuInternet \ enumera tanto Internet Explorer como Firefox en mi PC.

Y obtener la asociación .html también me falla, ya que los archivos HTML están asociados con IE pero Firefox es mi navegador predeterminado.

Tenga en cuenta que no quiero realmente abrir el navegador, simplemente obtener su nombre.

Respuesta

12

HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) es el controlador del usuario actual para el protocolo HTTP (lo que significa "navegador predeterminado"; NOTA: esto NO es lo mismo que el controlador predeterminado .html!).

Sin embargo, es posible tener un navegador diferente en la parte superior del menú de inicio sin cambiar el valor predeterminado. FYI, el nombre del ejecutable del navegador en el menú Inicio se almacena en HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default).

+0

Gracias. Parece que hice una pregunta incorrecta. Cuando hace clic en un archivo HTML, el navegador que se abre es el que ha registrado el protocolo HTTP, no el navegador que está en el menú de inicio. Esto ha resuelto mi problema. – soupagain

+1

@soupagain: En realidad, no. Cuando hace clic en un .html ** archivo **, el navegador que lo abre es el que ha registrado la extensión .html. Cuando abre un http: // ** enlace ** (por ejemplo, escribiéndolo en el cuadro "Inicio-> Ejecutar"), el navegador que se abre es el que ha registrado el protocolo HTTP (aunque generalmente es el mismo navegador en ambos casos). Tiene razón en que lo que se muestra en el menú de inicio no está relacionado con esto. – Piskvor

+0

Sí, eso es lo que quise decir, pero lo explicaste mejor. – soupagain

2

Los navegadores predeterminados generalmente se configuran por usuario. ¿Has probado HKEY_CURRENT_USER en su lugar? Aparece en la mía debajo de allí correctamente.

5

Probado en Windows 7 x64: Este es un proceso de dos pasos. el navegador predeterminado del usuario está en clave:

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

navegador Común Nombre de clave:

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

Reemplazar <KEY NAME> continuación con uno de los valores de arriba para encontrar el ejecutable:

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

script de AutoHotkey para mostrar la ruta navegador predeterminado y ejecutable:

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 
} 
+0

¿Alguna idea de cuál es la diferencia entre esto y la respuesta de @ Piskvor? Su respuesta parece funcionar en Windows 8.1 x64 (por lo que supongo que también funciona en Windows 7, aunque tal vez sea porque es una actualización). – gman

Cuestiones relacionadas