Jak zmienić domyślną przeglądarkę na niepubliczny program w systemie Windows 7?

25

Regularnie korzystam z wielu przeglądarek, więc napisałem skrypt, który otworzy strony w dowolnej przeglądarce, która jest już uruchomiona (lub Firefox, jeśli nie ma żadnej). Chcę ustawić ten skrypt jako domyślną przeglądarkę. Kiedy przechodzę do okna dialogowego „Ustaw powiązania”, wybieram HTTP i klikam „Zmień program”, okno dialogowe, które się pojawia, nie pozwala mi wybierać niczego oprócz jednej przeglądarki internetowej, którą już zainstalowałem. Wydaje się, że dzieje się tak w przypadku wszystkich protokołów (w przeciwieństwie do rozszerzeń plików, które pozwalają wybierać z „Innych programów” lub wyszukiwać programy, których nie ma na liście). Pomoc systemu Windows nic nie mówi na ten temat, a jedynie mówi o użyciu przycisku „Przeglądaj ...”, który nie jest dostępny. Próbowałem nawet zewnętrznego edytora programów domyślnych, ale wydaje się, że nie jest w stanie tego zrobić.

Czy istnieje sposób, aby ręcznie ustawić skrypt jako domyślny (może poprzez edycję rejestru)?

Morgan May
źródło

Odpowiedzi:

36

Tak, możesz napisać skrypt za pomocą bezpośredniej manipulacji rejestrem.

Krótka odpowiedź

Skopiować każdy z wymienionych poniżej systemów w .regplikach (takich jak firefox.reg, chrome.reg, ie.reg) i uruchomić je, gdy chcesz przełącznika (lub skryptu z reg.exe).

W przeglądarce Firefox:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"

W przypadku Chrome:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"

Dla IE9:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"

Długa odpowiedź

System Windows przechowuje standardowy protokół dla poszczególnych użytkowników Domyślne rejestracje pod UrlAssociationskluczem, które można znaleźć pod adresem

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations

Podobnie jak w przypadku skojarzeń plików, może istnieć „Program domyślny” dla łączy. Jest to rodzaj terminologii żargonowej odwołującej się do UserChoiceklucza - istnieje również standardowa rejestracja powłoki przypominająca skojarzenie pliku w httpProgId, którą można również zmienić, ale konfiguracja proksymalna dla przeglądarek odbywa się za pomocą programów domyślnych (patrz dolny komentarz na ten temat ).

Mówię tutaj o tym, co zmieniasz, gdy idziesz do sekcji Domyślne programy w Panelu sterowania, aby ustawić przeglądarkę:

Domyślne programy protokołów w Panelu sterowania

Aby skonfigurować to bezpośrednio w rejestrze, najpierw sprawdźmy, czy już tam jest. Na tym zrzucie ekranu nawigowałem do tego klucza regedit.exe, a Chrome jest moją domyślną przeglądarką, oznaczoną ChromeHTMLwartością ProgId.

Nawigacja do podklucza UrlAssociations w regedit

Minimalną zmianą, którą musisz wprowadzić, aby przełączyć przeglądarkę, która otwiera się po kliknięciu łącza, jest zmiana ProgIdwartości pod UserChoicepodkluczem każdego protokołu, który chcesz zmienić (prawdopodobnie httpi httpsbędzie taki sam, ale jeśli z jakiegoś powodu chciałeś zrobić każdy z nich z tych otwartych w oddzielnych przeglądarkach, możesz).

Teraz jest tylko kwestia ustalenia, czego używać w przeglądarce Firefox, IE i każdej innej przeglądarce, na którą chcesz się przełączyć. Jeśli chcesz to ustalić programowo, możesz to zrobić, zagłębiając się w Capabilitiesklucz rejestracji przeglądarki, znaleziony tutaj dla przeglądarki Firefox:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet jest to miejsce, w którym wymienione są wszystkie przeglądarki, a każda z nich powinna mieć powyższą strukturę.

Przechodzenie do klucza Capabilities w regedit

Z inspekcji widać, że gdybym chciał przejść na Firefoksa, FirefoxURLużyłbym wartości ProgId z powrotem w UrlAssociations.

(Jeśli jednak nie chcesz tak przekopać, możesz szybko oszukać: ustaw dowolną przeglądarkę jako domyślną i odśwież regedit, aby zobaczyć, co ustawiła przeglądarka UserChoice!)

Wszystko, co musimy zrobić, to zmienić tę kluczową wartość na FirefoxURL, a teraz linki otwierają się w Firefox. Po wykonaniu tej czynności możesz kliknąć link lub dwukrotnie sprawdzić w panelu sterowania, czy zarejestrowane jest właściwe ustawienie domyślne:

Podwójne sprawdzenie domyślnego programu w Panelu sterowania

Teraz, jeśli uważnie obserwujesz, możesz zauważyć kilka wad tego wszystkiego:

  1. IE nie ma URLAssociationspodklucza pod rejestracją przeglądarki StartMenuInternet, więc skąd pochodzi wartość ProgId? Odpowiedź: Nie wiem, przynajmniej nie bez dalszych badań. Może być zapisany na stałe lub znaleźć w innym kluczu, którego jeszcze nie znalazłem.

  2. Firefoksa ProgId jest pod To URLAssociationsFirefoxURL, ale po kliknięciu zarejestrować w opcji w samej przeglądarce, używa FirefoxHTMLjako PROGID zamiast! Czemu? Znowu nie wiem. Oba działają, ponieważ oba istnieją i wskazują Firefox. Może jest to celowe, ale prawdopodobnie jest to tylko błąd bez efektu.

  3. Co się stanie, gdy nie będzie UserChoiceprogramu domyślnego? Odpowiedź: używane jest „zwykłe” skojarzenie pliku dla protokołu (np. http). Ten znajduje się w standardowych lokalizacjach PROGID podobnie jak skojarzenia plików ( HKCU\Software\Classes, HKLM\Software\Classes, a widok na HKCR). Myślę, że przynajmniej Chrome ustawia tam informacje, ale Firefox nie wydaje się, przynajmniej w moich testach.

  4. Polecam, jeśli chcesz dodać to do Edytora programów domyślnych, powinieneś zasugerować i głosować na stronie opinii użytkowników tej aplikacji . Mam dobrą władzę, że autor aplikacji zwraca uwagę na tę informację zwrotną, decydując, jak spędzić czas na rozwoju!

Factor Mystic
źródło
2
Dziękuję za szczegółową odpowiedź. Co zrobiłbym, gdybym chciał ustawić coś innego niż jedną z zainstalowanych przeglądarek jako domyślną procedurę obsługi HTTP? Czy można w ogóle ustawić używanie czegoś, co nie zostało jeszcze zainstalowane w rejestrze? Czy też muszę utworzyć wpis rejestru dla mojego skryptu?
Morgan,
2
@MorganMay To, co musisz zrobić, to usunąć UserChoicerejestrację programów domyślnych, aby używane były „standardowe” klucze powiązania plików, o których mowa w punkcie 3. Na przykład spójrz na wartość domyślną HKEY_CLASSES_ROOT\http\shell\open\command(Możesz wpisać ten sam klucz HKEY_CURRENT_USERjako zwykły użytkownik, jeśli to ma znaczenie). Powinno być tylko kwestią ustawienia ścieżki aplikacji i dowolnego parametru parametru, którego potrzebuje Twoja przeglądarka (np. -- %1Myślę, że w przypadku Chrome)
Factor Mystic,
1
Cieszę się, że czytam do końca. Kombinacja usunięcia wpisów ProgId, a następnie ustawienia „domyślnej” procedury obsługi w poleceniu HKCR \ http \ shell \ open \
Brent
-1

Jeśli jest ktoś, kto wylądował na tej odpowiedzi i chce ustawić coś niestandardowego jako domyślny moduł obsługi protokołu w systemie Windows 10, myślę, że go złamałem.

Inna odpowiedź na to pytanie zbliżyła mnie do Clients\StartMenuInternetklucza, o którym nie wiedziałem, aby ustawić domyślną przeglądarkę w systemie Windows 7. Jednak po prawie zduplikowaniu StartMenuInternetklucza Firefoksa mój program nadal nie pojawiał się w Ustawieniach app.

Po użyciu Revo Uninstaller rozpocząć odinstalowywania firefox, anulowanie deinstalatora Firefoksa następnie pozwalając klucze Revo skanowania resztki rejestru, znalazłem inny klucz: HKLM\SOFTWARE\RegisteredApplications. Wygląda na to, że przechowuje wszystkie zarejestrowane programy, dzięki którym Windows może zostać poinformowany o ich funkcjonalności.

Po skonfigurowaniu StartMenuInternetklucza dodaj klucz, HKLM\SOFTWARE\RegisteredApplicationsaby wskazać Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities- tak, dokładnie tak, zaczynając od Software\:

Zrzut ekranu z regedit (nie mogę osadzić obrazu, dopóki nie mam 10 powtórzeń ...)

Walkman
źródło
-1

Aby Twój program (YName.exe) mógł zostać uznany za przeglądarkę, musisz go zarejestrować:

1) ... StartMenuInternet - jak opisano powyżej,

HKCU \ Software \ Clients \ StartMenuInternet \ YName \ Capabilities \ URLAssociations

http = YNameURL

https = YNameURL

2) HKCU \ Software \ RegisteredApplications - jak opisano powyżej:

YName = Software \ Clients \ StartMenuInternet \ YName \ Capabilities

3) Polecenie HKCU \ Software \ Classes \ YNameURL \ shell \ open \

@ = Ścieżka \ YName.exe

4) Polecenie HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \

@ = Ścieżka \ YName.exe


Andrey Arov
źródło
1
Witamy w Super User ! Pamiętaj, że odpowiedzi muszą być w języku angielskim (całkowicie).
Glorfindel
(1)  Super User to strona tylko w języku angielskim. Usuń części odpowiedzi, które nie są w języku angielskim. (2) Każda odpowiedź powinna być w stanie stać (mieć sens) sama w sobie. Ten nie. Odpowiedzi nie powinny brzmieć „jak opisano powyżej” w odniesieniu do innych odpowiedzi. Proszę edytować ten więc ma to sens sama. Kopiowanie części innych odpowiedzi jest dozwolone, o ile wyrazisz uznanie. (3) Wydaje się, że większość tego, co mówi ta wypowiedź. Wyjaśnij, jakie nowe informacje dodajesz.
Scott