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:

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.

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.

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:

Ahora, si ha estado prestando mucha atención, es posible que haya notado un par de fallas con todo esto:
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.
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.
¿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.
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!
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 deHKEY_CLASSES_ROOT\http\shell\open\command(Puede escribir esa misma claveHKEY_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)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 laStartMenuInternetclave de Firefox , mi programa aún no aparecía en la Configuración aplicaciónDespué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 claveHKLM\SOFTWARE\RegisteredApplicationspara señalarSoftware\Clients\StartMenuInternet\YOURPROGRAM\Capabilities: sí, exactamente así, comenzando conSoftware\:Captura de pantalla de regedit (no puedo incrustar la imagen hasta que tenga 10 rep ...)
fuente
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
fuente