24

Я регулярно использую несколько браузеров, поэтому я написал скрипт, который будет открывать страницы в любом браузере, который уже запущен (или Firefox, если его нет). Я хочу установить этот скрипт в качестве браузера по умолчанию. Когда я иду в диалоговое окно "Установить ассоциации", выбираю HTTP и нажимаю "Изменить программу", всплывающее диалоговое окно не позволяет мне выбирать что-либо, кроме одного из уже установленных веб-браузеров. Похоже, что это относится ко всем протоколам (в отличие от расширений файлов, которые позволяют вам выбрать "Другие программы" или выбрать программу, которой нет в списке). В справке Windows об этом ничего не сказано, а просто сказано использовать кнопку «Обзор ...», которая недоступна. Я даже попробовал сторонний "Редактор программ по умолчанию", но, похоже, он не может этого сделать.

Есть ли способ, которым я могу установить свой сценарий по умолчанию вручную (может быть, путем редактирования реестра)?

2 ответа2

34

Да, вы можете написать это с помощью прямых манипуляций с реестром.

Краткий ответ

Скопируйте каждое из следующего в файлы .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.

Переход к подразделу UrlAssociations в regedit

Минимальное изменение , которое нужно сделать , чтобы переключиться , какой браузер открывается при нажатии на ссылку, чтобы изменить значение ProgId под UserChoice подразделу каждого протокола , который вы хотите изменить (возможно , http и https , будет то же самое, но если по каким - то причинам хотел сделать каждый из них открытым в отдельных браузерах, вы могли бы).

Теперь нужно просто определить, что использовать для Firefox, IE и любого другого браузера, на который вы можете переключиться. Если вы хотите определить это программно, вы можете сделать это, покопавшись в ключе Capabilities регистрации браузера, который можно найти здесь для Firefox:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet - это место, где перечислены все браузеры, и каждый из них должен иметь указанную выше структуру.

Перейдите к ключу Capabilities в regedit

Из проверки видно, что если бы я захотел перейти на Firefox, я бы использовал значение FirefoxURL FirefoxURL для резервного копирования в UrlAssociations.

(Тем не менее, если вы не хотите копаться так, есть быстрый обман: просто установите любой браузер, который вы хотите по умолчанию, и обновите regedit, чтобы увидеть, что браузер установил для UserChoice !)

Все, что нам нужно сделать, это изменить это значение ключа на FirefoxURL , и теперь ссылки открываются в Firefox. После этого вы можете либо щелкнуть ссылку, либо дважды проверить на панели управления, что правильное значение по умолчанию зарегистрировано:

Двойная проверка программы по умолчанию на панели управления

Теперь, если вы уделяете пристальное внимание, вы могли заметить пару недостатков со всем этим:

  1. IE не имеет подраздела URLAssociations при регистрации в браузере в StartMenuInternet , так откуда же берется значение ProgId? Ответ: я не знаю, по крайней мере, без дополнительных исследований. Это может быть жестко закодировано или найдено в другом ключе, который я еще не нашел.

  2. ProgId в Firefox под URLAssociations - FirefoxURL , но когда вы нажимаете, чтобы зарегистрироваться в опциях в самом браузере, он использует FirefoxHTML в качестве ProgId! Зачем? Опять не знаю. Они оба работают, потому что они оба существуют и указывают на Firefox. Может быть, это намеренно, но это, вероятно, просто ошибка без эффекта.

  3. Что происходит, когда нет программы UserChoice умолчанию? Ответ: используется "обычное" сопоставление файлов для протокола (например, http). Это можно найти в стандартных местах ProgId, таких как ассоциации файлов (HKCU\Software\Classes , HKLM\Software\Classes и представление в HKCR). По крайней мере, Chrome предоставляет информацию там, я думаю, но Firefox, похоже, этого не делает, по крайней мере, в моих тестах.

  4. Я рекомендую, чтобы, если вы хотите, чтобы это было добавлено в редактор программ по умолчанию, вы должны предложить и добавить его на страницу обратной связи UserVoice этого приложения. У меня есть все основания полагать, что автор приложения обращает внимание на эту обратную связь, когда решает, как потратить время на разработку!

-1

Если есть кто-то еще, кто нашел этот ответ, пытаясь установить что-то нестандартное в качестве обработчика протокола по умолчанию в Windows 10, думаю, я его взломал.

Другой ответ на этот вопрос позволил мне приблизиться к Clients\StartMenuInternet , о котором я не знал, как настроить браузер по умолчанию в Windows 7. Однако после того, как в значительной степени продублировали FireMox ключ StartMenuInternet , моя программа все еще не появлялась в приложении «Настройки».

После использования Revo Uninstaller для запуска удаления firefox, отмены деинсталлятора firefox и последующего разрешения Revo сканировать оставшиеся ключи реестра я нашел другой ключ: HKLM\SOFTWARE\RegisteredApplications . Кажется, что в нем хранятся все зарегистрированные программы, чтобы окна могли рассказать об их функциональности.

Поэтому после настройки ключа StartMenuInternet добавьте ключ в HKLM\SOFTWARE\RegisteredApplications чтобы он указывал на Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities - да, именно так, начиная с Software\:

Снимок экрана regedit (я не могу вставить изображение, пока у меня не будет 10 повторений ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .