Sim, você pode criar um script com manipulação direta do registro.
A resposta curta
Copie cada um dos seguintes para .reg
arquivos (como firefox.reg
, chrome.reg
, ie.reg
) e executá-los quando quiser switch (ou, script com reg.exe
).
Para o Firefox:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
Para o Chrome:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
Para o IE9:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
A resposta longa
O Windows armazena os registros padrão do protocolo padrão por usuário sob a UrlAssociations
chave, encontrados em
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
Semelhante às associações de arquivos, pode haver um "Programa Padrão" para links. Esse é um tipo de terminologia de jargão que faz referência à UserChoice
chave - também há um registro de shell semelhante a uma associação de arquivos padrão no http
ProgId que também pode ser alterado, mas a configuração proximal para navegadores é via Programas Padrão (veja abaixo para um comentário adicional sobre este )
O que estou falando aqui é o que você está alterando quando vai à seção Programas Padrão do Painel de Controle para definir um navegador:
Para configurar isso diretamente no registro, primeiro vamos inspecionar se já está lá. Nesta captura de tela, naveguei para essa chave regedit.exe
e o Chrome é meu navegador padrão, designado pelo ChromeHTML
valor ProgId.
A alteração mínima que você precisa fazer para mudar o navegador que se abre quando você clica em um link é alterar o ProgId
valor sob a UserChoice
subchave em cada protocolo que você deseja alterar (provavelmente http
e https
será o mesmo, mas se por algum motivo você quiser criar cada daqueles abertos em navegadores separados, você poderia).
Agora é apenas uma questão de determinar o que usar para o Firefox, IE e qualquer outro navegador para o qual você queira mudar. Se você quiser determinar isso programaticamente, poderá fazê-lo digitando a Capabilities
chave do registro do navegador, encontrada aqui para o Firefox:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
é onde todos os navegadores estão listados e cada um deve ter a estrutura acima.
Você pode ver na inspeção que, se eu quisesse mudar para o Firefox, usaria o FirefoxURL
valor ProgId em UrlAssociations.
(No entanto, se você não quiser procurar assim, há uma dica rápida: basta definir o navegador que você deseja como padrão e atualizar o regedit para ver o que o navegador definiu para o UserChoice
!)
Tudo o que precisamos fazer é alterar esse valor-chave para FirefoxURL
, e agora os links são abertos no Firefox. Depois de fazer isso, você pode clicar em um link ou verificar no painel de controle se o padrão correto está registrado:
Agora, se você estiver prestando muita atenção, talvez tenha notado algumas falhas com tudo isso:
O IE não possui uma URLAssociations
subchave no registro do navegador StartMenuInternet
; portanto, de onde vem o valor ProgId? Resposta: Não sei, pelo menos não sem mais pesquisas. Pode ser codificado ou encontrado em outra chave que ainda não encontrei.
ProgId do Firefox está sob seu URLAssociations
são FirefoxURL
, mas quando você clica para registar nas opções no próprio navegador, ele usa FirefoxHTML
como o ProgId vez! Por quê? Mais uma vez, eu não sei. Ambos funcionam porque ambos existem e apontam para o Firefox. Talvez seja intencional, mas provavelmente é apenas um bug sem efeito.
O que acontece quando não há UserChoice
Programa Padrão? Resposta: a associação de arquivo "regular" para o protocolo (por exemplo, http
) é usada. Isto é encontrado nos locais padrão ProgId assim como associações de arquivo ( HKCU\Software\Classes
, HKLM\Software\Classes
e a vista no HKCR
). Acho que pelo menos o Chrome define suas informações lá, mas o Firefox não parece, pelo menos nos meus testes.
Eu recomendo que, se você quiser que isso seja adicionado ao Editor de Programas Padrão, você deve sugerir e fazer uma votação na página de Feedback do UserVoice desse aplicativo . Estou certo de que o autor do aplicativo presta atenção a esse feedback ao decidir como gastar seu tempo de desenvolvimento!