¿Cómo cambio mi navegador predeterminado a un programa no listado en Windows 7?

25

Utilizo varios navegadores regularmente, por lo que escribí un script que abrirá páginas en cualquier navegador que ya se esté ejecutando (o Firefox si no hay ninguno). Quiero establecer este script como mi navegador predeterminado. Cuando voy al cuadro de diálogo "Establecer asociaciones", selecciono HTTP y hago clic en "Cambiar programa", el cuadro de diálogo que aparece no me permite seleccionar nada, excepto uno de los navegadores web que ya he instalado. Este parece ser el caso de todos los protocolos (a diferencia de las extensiones de archivo, que le permiten elegir entre "Otros programas" o buscar un programa que no esté en la lista). La ayuda de Windows no dice nada sobre esto, y solo dice que use el botón "Examinar ...", que no está disponible. Incluso probé el "Editor de programas predeterminados" de terceros, pero no parece ser capaz de hacerlo.

¿Hay alguna manera de que pueda configurar mi script como predeterminado de forma manual (tal vez editando el registro)?

Morgan May
fuente

Respuestas:

36

Sí, puede escribirlo con la manipulación directa del registro.

La respuesta corta

Copiar cada uno de los siguientes en .regarchivos (como por ejemplo firefox.reg, chrome.reg, ie.reg) y ejecutarlos cuando se desea cambiar (o, con guión reg.exe).

Para Firefox:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"

Para Chrome:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"

Para IE9:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"

La larga respuesta

Windows almacena los registros predeterminados del protocolo estándar por usuario bajo la UrlAssociationsclave, que se encuentra en

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations

Similar a las asociaciones de archivos, puede haber un "Programa predeterminado" para los enlaces. Esta es una especie de terminología de jerga que hace referencia a la UserChoiceclave: también hay un registro de shell similar a una asociación de archivos estándar bajo el httpProgId que también se puede cambiar, pero la configuración proximal para los navegadores se realiza a través de Programas predeterminados (consulte la parte inferior para obtener un comentario adicional sobre esto )

De lo que estoy hablando aquí es de lo que estás cambiando cuando vas a la sección Programas predeterminados del Panel de control para configurar un navegador:

Programas predeterminados para protocolos en el panel de control

Para configurar esto directamente en el registro, primero inspeccionemos que ya está allí. En esta captura de pantalla, he navegado hasta esa clave regedit.exey Chrome es mi navegador predeterminado, designado por el ChromeHTMLvalor ProgId.

Navegando a la subclave UrlAssociations en regedit

El cambio mínimo que necesita hacer para cambiar qué navegador se abre cuando hace clic en un enlace es cambiar el ProgIdvalor debajo de la UserChoicesubclave en cada protocolo que desea cambiar (probablemente httpy httpsserá el mismo, pero si por alguna razón desea hacer cada uno de los que se abren en navegadores separados, podría).

Ahora es solo una cuestión de determinar qué usar para Firefox, IE y cualquier otro navegador al que desee cambiar. Si desea determinar esto mediante programación, puede hacerlo cavando en la Capabilitiesclave del registro del navegador, que se encuentra aquí para Firefox:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet es donde se enumeran todos los navegadores, y cada uno debe tener la estructura anterior.

Navegando a la clave de capacidades en regedit

Puede ver en la inspección que si quisiera cambiar a Firefox, usaría el FirefoxURLvalor ProgId nuevamente en UrlAssociations.

(Sin embargo, si no quisiera excavar de esta manera, hay un truco rápido: ¡simplemente configure el navegador que desee como predeterminado y actualice regedit para ver lo que el navegador ha configurado para el UserChoice!)

Todo lo que necesitamos hacer es cambiar ese valor clave a FirefoxURL, y ahora los enlaces se abren en Firefox. Después de hacerlo, puede hacer clic en un enlace o verificar en el panel de control que esté registrado el valor predeterminado correcto:

Verificando dos veces el programa predeterminado en el Panel de control

Ahora, si ha estado prestando mucha atención, es posible que haya notado un par de fallas con todo esto:

  1. IE no tiene una URLAssociationssubclave debajo del registro del navegador StartMenuInternet, entonces, ¿de dónde viene el valor ProgId? Respuesta: No lo sé, al menos no sin más investigación. Puede estar codificado o encontrado en otra clave que aún no he encontrado.

  2. Los ProgId de Firefox debajo URLAssociationsestán FirefoxURL, pero cuando haces clic para registrarte en las opciones en el navegador, ¡se usa FirefoxHTMLcomo ProgId! ¿Por qué? De nuevo, no lo sé. Ambos funcionan porque ambos existen y apuntan a Firefox. Tal vez sea intencional, pero probablemente sea solo un error sin efecto.

  3. ¿Qué sucede cuando no hay un UserChoiceprograma predeterminado? Respuesta: httpse utiliza la asociación de archivos "regular" para el protocolo (por ejemplo, ). Esto se encuentra en los lugares ProgId estándar al igual que las asociaciones de archivos ( HKCU\Software\Classes, HKLM\Software\Classesy la vista HKCR). Al menos Chrome establece su información allí, creo, pero Firefox no parece, al menos en mis pruebas.

  4. Recomiendo que si desea que esto se agregue al Editor de programas predeterminados, debe sugerirlo y votarlo en la página de comentarios de UserVoice de esa aplicación . ¡Estoy convencido de que el autor de la aplicación presta atención a esos comentarios al decidir cómo pasar su tiempo de desarrollo!

Factor místico
fuente
2
Gracias por la respuesta detallada. ¿Qué haría si quisiera establecer algo más que uno de los navegadores instalados como el controlador HTTP predeterminado? ¿Es posible configurarlo para que use algo que aún no se ha instalado en el registro? ¿O tendré que crear una entrada de registro para mi script?
Morgan Mayo
2
@MorganMay Lo que debe hacer es eliminar el UserChoiceregistro de Programas predeterminados, de modo que se usen las claves de asociación de archivos "estándar", como se menciona en el punto 3. Por ejemplo, mire el valor predeterminado de HKEY_CLASSES_ROOT\http\shell\open\command(Puede escribir esa misma clave HKEY_CURRENT_USERcomo usuario estándar, si eso es importante). Debería ser solo una cuestión de configurar la ruta de la aplicación y cualquier cadena de parámetros que necesite su navegador (por ejemplo, -- %1creo que para Chrome)
Factor Mystic
1
Me alegro de haber leído hasta el final. La combinación de eliminar las entradas de ProgId y luego configurar el controlador "predeterminado" en HKCR \ http \ shell \ open \ command
Brent
-1

Si hay alguien más que obtuvo esta respuesta mientras buscaba configurar algo personalizado como un controlador de protocolo predeterminado en Windows 10, creo que lo descifré.

La otra respuesta a esta pregunta me acercó un paso más con la Clients\StartMenuInternetclave, que no conocía para configurar el navegador predeterminado en Windows 7. Sin embargo, después de duplicar la StartMenuInternetclave de Firefox , mi programa aún no aparecía en la Configuración aplicación

Después de utilizar Revo Uninstaller para iniciar una desinstalación de Firefox, cancelando el desinstalador de Firefox luego dejar las llaves Revo exploración de los restos del registro, me encontré con otra tecla: HKLM\SOFTWARE\RegisteredApplications. Esto parece almacenar todos los programas registrados en los que se puede informar a Windows sobre su funcionalidad.

Entonces, después de configurar la StartMenuInternetclave, agregue una clave HKLM\SOFTWARE\RegisteredApplicationspara señalar Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities: sí, exactamente así, comenzando con Software\:

Captura de pantalla de regedit (no puedo incrustar la imagen hasta que tenga 10 rep ...)

Walkman
fuente
-1

Para que su programa (YName.exe) se considere un navegador, debe estar registrado:

1) ... StartMenuInternet - como se describió anteriormente,

HKCU \ Software \ Clients \ StartMenuInternet \ YName \ Capabilities \ URLAssociations

http = YNameURL

https = YNameURL

2) HKCU \ Software \ RegisteredApplications - como se describe arriba:

YName = Software \ Clientes \ StartMenuInternet \ YName \ Capabilities

3) HKCU \ Software \ Classes \ YNameURL \ shell \ open \ command

@ = Ruta \ YName.exe

4) HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \ command

@ = Ruta \ YName.exe


Andrey Arov
fuente
1
¡Bienvenido a Super User ! Tenga en cuenta que las respuestas deben estar en inglés (enteramente).
Glorfindel
(1)  Super User es un sitio solo en inglés. Elimine las partes de su respuesta que no están en inglés. (2) Cada respuesta debe poder sostenerse (tener sentido) por sí misma. Este no lo hace. Las respuestas no deben decir "como se describió anteriormente" en referencia a otras respuestas. Por favor, editar este modo que tiene sentido por sí mismo. Está bien copiar partes de otras respuestas siempre que otorgue crédito. (3) La mayor parte de lo que dice parece haber sido dicho ya. Deje en claro qué información nueva está agregando.
Scott