Tak, możesz napisać skrypt za pomocą bezpośredniej manipulacji rejestrem.
Krótka odpowiedź
Skopiować każdy z wymienionych poniżej systemów w .reg
plikach (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 UrlAssociations
kluczem, 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 UserChoice
klucza - istnieje również standardowa rejestracja powłoki przypominająca skojarzenie pliku w http
ProgId, 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ę:
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ą ChromeHTML
wartością ProgId.
Minimalną zmianą, którą musisz wprowadzić, aby przełączyć przeglądarkę, która otwiera się po kliknięciu łącza, jest zmiana ProgId
wartości pod UserChoice
podkluczem każdego protokołu, który chcesz zmienić (prawdopodobnie http
i https
bę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 Capabilities
klucz 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ę.
Z inspekcji widać, że gdybym chciał przejść na Firefoksa, FirefoxURL
uż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:
Teraz, jeśli uważnie obserwujesz, możesz zauważyć kilka wad tego wszystkiego:
IE nie ma URLAssociations
podklucza 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.
Firefoksa ProgId jest pod To URLAssociations
są FirefoxURL
, ale po kliknięciu zarejestrować w opcji w samej przeglądarce, używa FirefoxHTML
jako 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.
Co się stanie, gdy nie będzie UserChoice
programu 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.
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!
UserChoice
rejestrację 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 kluczHKEY_CURRENT_USER
jako 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.-- %1
Myślę, że w przypadku Chrome)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\StartMenuInternet
klucza, o którym nie wiedziałem, aby ustawić domyślną przeglądarkę w systemie Windows 7. Jednak po prawie zduplikowaniuStartMenuInternet
klucza 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
StartMenuInternet
klucza dodaj klucz,HKLM\SOFTWARE\RegisteredApplications
aby wskazaćSoftware\Clients\StartMenuInternet\YOURPROGRAM\Capabilities
- tak, dokładnie tak, zaczynając odSoftware\
:Zrzut ekranu z regedit (nie mogę osadzić obrazu, dopóki nie mam 10 powtórzeń ...)
źródło
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
źródło