Como altero meu navegador padrão para um programa não listado no Windows 7?

25

Eu uso vários navegadores regularmente, por isso escrevi um script que abrirá páginas em qualquer navegador que já esteja em execução (ou no Firefox, se não houver). Quero definir esse script como meu navegador padrão. Quando vou à caixa de diálogo "Definir associações", selecione HTTP e clique em "Alterar programa", a caixa de diálogo exibida não permite que eu selecione nada, exceto um dos navegadores da web que eu já instalei. Esse parece ser o caso de todos os protocolos (ao contrário das extensões de arquivo, que permitem escolher "Outros programas" ou procurar um programa que não esteja listado). A ajuda do Windows não diz nada sobre isso e diz apenas para usar o botão "Procurar ...", que não está disponível. Eu até tentei o "Editor de programas padrão" de terceiros, mas ele não parece capaz de fazer isso.

Existe uma maneira de definir meu script como padrão manualmente (talvez editando o registro)?

Morgan May
fonte

Respostas:

36

Sim, você pode criar um script com manipulação direta do registro.

A resposta curta

Copie cada um dos seguintes para .regarquivos (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 UrlAssociationschave, 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 à UserChoicechave - também há um registro de shell semelhante a uma associação de arquivos padrão no httpProgId 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:

Programas padrão para protocolos no painel de controle

Para configurar isso diretamente no registro, primeiro vamos inspecionar se já está lá. Nesta captura de tela, naveguei para essa chave regedit.exee o Chrome é meu navegador padrão, designado pelo ChromeHTMLvalor ProgId.

Navegando para a subchave UrlAssociations no regedit

A alteração mínima que você precisa fazer para mudar o navegador que se abre quando você clica em um link é alterar o ProgIdvalor sob a UserChoicesubchave em cada protocolo que você deseja alterar (provavelmente httpe httpsserá 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 Capabilitieschave 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.

Navegando para a chave Capabilities no regedit

Você pode ver na inspeção que, se eu quisesse mudar para o Firefox, usaria o FirefoxURLvalor 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:

Verificando novamente o programa padrão no Painel de Controle

Agora, se você estiver prestando muita atenção, talvez tenha notado algumas falhas com tudo isso:

  1. O IE não possui uma URLAssociationssubchave 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.

  2. ProgId do Firefox está sob seu URLAssociationssão FirefoxURL, mas quando você clica para registar nas opções no próprio navegador, ele usa FirefoxHTMLcomo 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.

  3. O que acontece quando não há UserChoicePrograma 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\Classese 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.

  4. 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!

Fator Místico
fonte
2
Obrigado pela resposta detalhada. O que eu faria se desejasse definir algo diferente de um dos navegadores instalados como o manipulador HTTP padrão? É possível configurá-lo para usar algo que ainda não foi instalado no registro? Ou precisarei criar uma entrada de registro para o meu script?
21411 Morgan
2
@MorganMay O que você precisa fazer é remover o UserChoiceregistro 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 de HKEY_CLASSES_ROOT\http\shell\open\command(Você pode escrever a mesma chave HKEY_CURRENT_USERque 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, -- %1eu acho que para o Chrome)
Fator Místico
1
Ainda bem que li até o fim. A combinação de remover as entradas ProgId e definir o manipulador "padrão" no comando HKCR \ http \ shell \ open \
Brent
-1

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\StartMenuInternetchave, que eu não conhecia para configurar o navegador padrão no Windows 7. No entanto, depois de praticamente duplicar a StartMenuInternetchave 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 StartMenuInternetchave, adicione uma chave HKLM\SOFTWARE\RegisteredApplicationspara apontar para Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities- sim, exatamente assim, começando com Software\:

Captura de tela do regedit (não consigo incorporar a imagem até ter 10 repetições ...)

Walkman
fonte
-1

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


Andrey Arov
fonte
1
Bem-vindo ao Super Usuário ! Observe que as respostas devem estar em inglês (inteiramente).
Glorfindel
(1)  Superusuário é um site somente em inglês. Exclua as partes da sua resposta que não estão em inglês. (2) Toda resposta deve ser capaz de se manter (faz sentido) por si mesma. Este não. As respostas não devem dizer "como descrito acima" em referência a outras respostas. Por favor edite este por isso faz sentido por si só. Não há problema em copiar partes de outras respostas, desde que você dê crédito. (3) A maior parte do que isso diz parece já ter sido dita. Por favor, deixe claro quais novas informações você está adicionando.
Scott