Так, ви можете його скриптувати за допомогою прямого маніпулювання реєстром.
Короткий відповідь
Скопіюйте кожен з наступних в .reg
файли (наприклад firefox.reg
, chrome.reg
, ie.reg
) і запускати їх , коли ви хочете , щоб перемикач (або сценарій з reg.exe
).
Для Firefox:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
Для Chrome:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
Для IE9:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
Довга відповідь
Windows зберігає стандартний протокол для кожного користувача під UrlAssociations
ключ, знайдений на
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
Аналогічно асоціаціям файлів, для посилань може бути "Програма за замовчуванням". Це своєрідна термінологія жаргону, на яку посилається UserChoice
ключ - також існує стандартна реєстрація оболонок, подібних до асоціації файлів під http
ProgId, яку також можна змінити, але проксимальна конфігурація для браузерів здійснюється за допомогою програм за замовчуванням (див. Знизу для додаткового коментаря до цього ).
Про що я тут говорю, - це те, що ви змінюєте, перейшовши до розділу Програми за замовчуванням на панелі керування, щоб встановити браузер:
Щоб налаштувати це безпосередньо в реєстрі, спочатку перевіримо, що вже є. У цьому скріншоті я перейшов до цієї клавіші regedit.exe
, а Chrome - мій браузер за замовчуванням, позначений ChromeHTML
значенням ProgId.
Мінімальна зміна, яку потрібно внести для переключення браузера, який відкриється при натисканні на посилання, - це зміна ProgId
значення під UserChoice
підрозділом у кожному протоколі, який ви хочете змінити (можливо, http
і https
буде однаковим, але якщо ви чомусь хотіли зробити кожен з тих, які відкриті в окремих браузерах, ви могли).
Тепер справа лише в тому, щоб визначити, що використовувати для Firefox, IE та будь-якого іншого браузера, на який ви можете перейти. Якщо ви хочете визначити це програмно, ви можете зробити це, заглибившись у Capabilities
ключ реєстрації браузера, знайдений тут для Firefox:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
там перераховані всі браузери, і кожен повинен мати вищевказану структуру.
З інспекції видно, що якби я хотів перейти на Firefox, я б використав FirefoxURL
значення резервного копіювання в UrlAssociations.
(Однак, якщо ви не хотіли копатися так, є швидкий обман: просто встановіть браузер, який ви хочете, як за замовчуванням, і оновіть regedit, щоб побачити, що браузер встановив для UserChoice
!)
Все, що нам потрібно зробити, - це змінити це ключове значення FirefoxURL
, і тепер відкриваються посилання у Firefox. Після цього ви можете або натиснути посилання, або двічі перевірити на панелі керування, чи правильно зареєстровано правильний стандарт:
Тепер, якщо ви звернули пильну увагу, ви, можливо, помітили пару недоліків у всьому цьому:
IE не має URLAssociations
підрозділу під реєстрацією браузера в StartMenuInternet
, так звідки береться значення ProgId? Відповідь: Я не знаю, принаймні не без додаткових досліджень. Він може бути жорстко закодований або знайдений в іншому ключі, якого я ще не знайшов.
Firefox ProgId під цим URLAssociations
є FirefoxURL
, але коли ви натискаєте, щоб зареєструватися в параметрах у самому браузері, він використовує FirefoxHTML
як ProgId! Чому? Знову ж таки, я не знаю. Вони обидва працюють, тому що вони обидва існують і вказують на Firefox. Можливо, це навмисно, але це, мабуть, просто помилка без ефекту.
Що відбувається, коли немає UserChoice
програми за замовчуванням? Відповідь: використовується "звичайна" асоціація файлів для протоколу (наприклад, http
). Це знаходиться в стандартних Progid місцях так само , як асоціації файлів ( HKCU\Software\Classes
, HKLM\Software\Classes
, і вид на HKCR
). Принаймні, Chrome встановлює цю інформацію там, я думаю, але Firefox не здається, принаймні в моїх тестах.
Рекомендую, якщо ви хочете, щоб це було додано до редактора програм за замовчуванням, вам слід запропонувати та викласти його на сторінці зворотного зв’язку UserVoice цієї програми . Я вважаю, що автор програми звертає увагу на цей зворотній зв'язок, вирішуючи, як витратити час на його розробку!