Да, вы можете написать это с помощью прямых манипуляций с реестром.
Краткий ответ
Скопируйте каждое из следующего в файлы .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
ChromeHTML.
Минимальное изменение , которое нужно сделать , чтобы переключиться , какой браузер открывается при нажатии на ссылку, чтобы изменить значение 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
FirefoxURL для резервного копирования в 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 этого приложения. У меня есть все основания полагать, что автор приложения обращает внимание на эту обратную связь, когда решает, как потратить время на разработку!