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ę:
![Domyślne programy protokołów w Panelu sterowania](https://i.imgur.com/DehDA.png)
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.
![Nawigacja do podklucza UrlAssociations w regedit](https://i.stack.imgur.com/Gm8jb.png)
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ę.
![Przechodzenie do klucza Capabilities w regedit](https://i.stack.imgur.com/TBcON.png)
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:
![Podwójne sprawdzenie domyślnego programu w Panelu sterowania](https://i.stack.imgur.com/DFVxE.png)
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!