Да, вы можете написать это с помощью прямых манипуляций с реестром.
Краткий ответ
Скопируйте каждый из следующих в .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 этого приложения . У меня есть все основания полагать, что автор приложения обращает внимание на эту обратную связь, когда решает, как потратить время на разработку!
UserChoice
регистрацию программ по умолчанию, чтобы использовались «стандартные» ключи ассоциации файлов, как указано в пункте № 3. Например, посмотрите на значение по умолчаниюHKEY_CLASSES_ROOT\http\shell\open\command
(Вы можете написать тот же ключHKEY_CURRENT_USER
как обычный пользователь, если это имеет значение). Нужно просто задать путь к приложению и любую строку параметров, которая нужна вашему браузеру (например,-- %1
я думаю, для Chrome)Если кто-то еще нашел этот ответ, пытаясь установить что-то нестандартное в качестве обработчика протокола по умолчанию в Windows 10, думаю, я его взломал.
Другой ответ на этот вопрос позволил мне приблизиться к
Clients\StartMenuInternet
ключу, о котором я не знал, как настроить браузер по умолчанию в Windows 7. Однако после значительного дублированияStartMenuInternet
ключа Firefox моя программа по-прежнему не появлялась в настройках. приложение.После того, как с помощью Revo Uninstaller , чтобы начать деинсталляцию светлячок, отменяя деинсталлятор Фирефокса затем давая ключи Revo сканирования для оставшихся в реестре, я нашел еще один ключ:
HKLM\SOFTWARE\RegisteredApplications
. Кажется, что в нем хранятся все зарегистрированные программы, чтобы окна могли рассказать об их функциональности.Поэтому после настройки
StartMenuInternet
ключа добавьте ключ,HKLM\SOFTWARE\RegisteredApplications
чтобы указатьSoftware\Clients\StartMenuInternet\YOURPROGRAM\Capabilities
- да, именно так, начиная сSoftware\
:Снимок экрана regedit (я не могу вставить изображение, пока у меня не будет 10 повторений ...)
источник
Чтобы ваша программа (YName.exe) считалась браузером, ее необходимо зарегистрировать:
1) ... StartMenuInternet - как описано выше,
HKCU \ Software \ Clients \ StartMenuInternet \ YName \ \ URLAssociations возможностей
HTTP = YNameURL
HTTPS = YNameURL
2) HKCU \ Software \ RegisteredApplications - как описано выше:
YName = Software \ Clients \ StartMenuInternet \ YName \ Возможности
3) HKCU \ Software \ Classes \ YNameURL \ shell \ open \ command
@ = Путь \ YName.exe
4) HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \ command
@ = Путь \ YName.exe
источник