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!
UserChoice
registro de Programas Padrão, para que as chaves de associação de arquivo "padrão" sejam usadas, conforme mencionado no ponto # 3. Por exemplo, observe o valor padrão deHKEY_CLASSES_ROOT\http\shell\open\command
(Você pode escrever a mesma chaveHKEY_CURRENT_USER
que um usuário padrão, se isso for importante). Deve ser apenas uma questão de definir o caminho do aplicativo e qualquer parâmetro de seqüência necessidades do seu navegador (por exemplo,-- %1
eu acho que para o Chrome)Se houver mais alguém que tenha chegado a essa resposta enquanto procura definir algo personalizado como manipulador de protocolo padrão no Windows 10, acho que já o decifrei.
A outra resposta a essa pergunta me aproximou mais da
Clients\StartMenuInternet
chave, que eu não conhecia para configurar o navegador padrão no Windows 7. No entanto, depois de praticamente duplicar aStartMenuInternet
chave do Firefox , meu programa ainda não estava aparecendo nas Configurações aplicativo.Depois de usar o Revo Uninstaller para iniciar uma desinstalação do Firefox, cancelando desinstalador do firefox, em seguida, deixar as chaves Revo varredura para sobras de registro, eu encontrei outra tecla:
HKLM\SOFTWARE\RegisteredApplications
. Isso parece armazenar todos os programas registrados para que o Windows possa ser informado sobre sua funcionalidade.Portanto, depois de configurar a
StartMenuInternet
chave, adicione uma chaveHKLM\SOFTWARE\RegisteredApplications
para apontar paraSoftware\Clients\StartMenuInternet\YOURPROGRAM\Capabilities
- sim, exatamente assim, começando comSoftware\
:Captura de tela do regedit (não consigo incorporar a imagem até ter 10 repetições ...)
fonte
Para que seu programa (YName.exe) seja considerado um navegador, ele precisa ser registrado:
1) ... StartMenuInternet - como descrito acima,
HKCU \ Software \ Clientes \ StartMenuInternet \ YName \ Capabilities \ URLAssociations
http = YNameURL
https = YNameURL
2) HKCU \ Software \ RegisteredApplications - como descrito acima:
YName = Software \ Clients \ StartMenuInternet \ YName \ Capabilities
3) HKCU \ Software \ Classes \ YNameURL \ shell \ open \ command
@ = Path \ YName.exe
4) HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \ command
@ = Path \ YName.exe
fonte