Да, вы можете написать это с помощью прямых манипуляций с реестром.
Краткий ответ
Скопируйте каждый из следующих в .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
значение ProgId для резервного копирования в UrlAssociations.
(Тем не менее, если вы не хотите копаться так, есть быстрый обман: просто установите любой браузер, который вы хотите по умолчанию, и обновите regedit, чтобы увидеть, что браузер установил для UserChoice
!)
Все, что нам нужно сделать, это изменить значение этого ключа FirefoxURL
, и теперь ссылки открываются в Firefox. После этого вы можете либо щелкнуть ссылку, либо дважды проверить на панели управления, что зарегистрировано правильное значение по умолчанию:
Теперь, если вы уделяете пристальное внимание, вы могли заметить пару недостатков со всем этим:
В IE нет URLAssociations
подключа при регистрации в браузере StartMenuInternet
, так откуда же берется значение ProgId? Ответ: я не знаю, по крайней мере, без дополнительных исследований. Это может быть жестко закодировано или найдено в другом ключе, который я еще не нашел.
ProgId Firefox, находится под это URLAssociations
есть FirefoxURL
, но при нажатии кнопки для регистрации в настройках в самом браузере, он использует в FirefoxHTML
качестве ProgId вместо этого! Зачем? Опять не знаю. Они оба работают, потому что они оба существуют и указывают на Firefox. Может быть, это намеренно, но это, вероятно, просто ошибка без эффекта.
Что происходит, когда нет UserChoice
программы по умолчанию? Ответ: используется «обычное» сопоставление файлов для протокола (например, http
). Это находится в стандартных Progid местах так же , как ассоциации файлов ( HKCU\Software\Classes
, HKLM\Software\Classes
, и вид на HKCR
). Я думаю, что, по крайней мере, Chrome размещает там свою информацию, но Firefox, похоже, этого не делает, по крайней мере, в моих тестах.
Я рекомендую, чтобы, если вы хотите, чтобы это было добавлено в редактор программ по умолчанию, вы должны предложить и добавить его на страницу обратной связи UserVoice этого приложения . У меня есть все основания полагать, что автор приложения обращает внимание на эту обратную связь, когда решает, как потратить время на разработку!