Sí, puede escribirlo con la manipulación directa del registro.
La respuesta corta
Copiar cada uno de los siguientes en .reg
archivos (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 UrlAssociations
clave, 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 UserChoice
clave: también hay un registro de shell similar a una asociación de archivos estándar bajo el http
ProgId 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:
Para configurar esto directamente en el registro, primero inspeccionemos que ya está allí. En esta captura de pantalla, he navegado hasta esa clave regedit.exe
y Chrome es mi navegador predeterminado, designado por el ChromeHTML
valor ProgId.
El cambio mínimo que necesita hacer para cambiar qué navegador se abre cuando hace clic en un enlace es cambiar el ProgId
valor debajo de la UserChoice
subclave en cada protocolo que desea cambiar (probablemente http
y https
será 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 Capabilities
clave 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.
Puede ver en la inspección que si quisiera cambiar a Firefox, usaría el FirefoxURL
valor 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:
Ahora, si ha estado prestando mucha atención, es posible que haya notado un par de fallas con todo esto:
IE no tiene una URLAssociations
subclave 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.
Los ProgId de Firefox debajo URLAssociations
están FirefoxURL
, pero cuando haces clic para registrarte en las opciones en el navegador, ¡se usa FirefoxHTML
como 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.
¿Qué sucede cuando no hay un UserChoice
programa predeterminado? Respuesta: http
se 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\Classes
y la vista HKCR
). Al menos Chrome establece su información allí, creo, pero Firefox no parece, al menos en mis pruebas.
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!