Как изменить браузер по умолчанию на незарегистрированную программу в Windows 7?

25

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

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

Морган Мэй
источник

Ответы:

36

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

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

Скопируйте каждый из следующих в .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ключ. Существует также стандартная регистрация оболочки, похожая на ассоциацию файлов, в httpProgId, которая также может быть изменена, но проксимальная конфигурация для браузеров осуществляется с помощью программ по умолчанию (дополнительные комментарии см. Ниже). ).

Я говорю о том, что вы меняете, когда переходите в раздел «Программы по умолчанию» на панели управления, чтобы установить браузер:

Программы по умолчанию для протоколов в панели управления

Чтобы настроить это непосредственно в реестре, давайте сначала проверим, что уже есть. На этом снимке экрана я перешел к этой клавише regedit.exe, и Chrome - мой браузер по умолчанию, обозначенный ChromeHTMLзначением ProgId.

Переход к подразделу 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значение ProgId для резервного копирования в 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 этого приложения . У меня есть все основания полагать, что автор приложения обращает внимание на эту обратную связь, когда решает, как потратить время на разработку!

Фактор Мистик
источник
2
Спасибо за подробный ответ. Что бы я сделал, если бы я хотел установить что-то кроме одного из установленных браузеров в качестве обработчика HTTP по умолчанию? Можно ли даже настроить его на использование чего-то, что еще не было установлено в реестре? Или мне нужно будет создать запись реестра для моего скрипта?
Морган
2
@MorganMay То, что вам нужно сделать, это удалить UserChoiceрегистрацию программ по умолчанию, чтобы использовались «стандартные» ключи ассоциации файлов, как указано в пункте № 3. Например, посмотрите на значение по умолчанию HKEY_CLASSES_ROOT\http\shell\open\command(Вы можете написать тот же ключ HKEY_CURRENT_USERкак обычный пользователь, если это имеет значение). Нужно просто задать путь к приложению и любую строку параметров, которая нужна вашему браузеру (например, -- %1я думаю, для Chrome)
Factor Mystic
1
Рад, что прочитал до конца. Комбинация удаления записей ProgId, а затем установки обработчика «по умолчанию» в команде HKCR \ http \ shell \ open \
Brent
-1

Если кто-то еще нашел этот ответ, пытаясь установить что-то нестандартное в качестве обработчика протокола по умолчанию в 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 повторений ...)

плеер
источник
-1

Чтобы ваша программа (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


Андрей Аров
источник
1
Добро пожаловать в Супер пользователя ! Обратите внимание, что ответы должны быть на английском языке (полностью).
Глорфиндель
(1)  Super User - сайт только на английском языке. Пожалуйста, удалите части вашего ответа, которые не на английском языке. (2) Каждый ответ должен быть в состоянии стоять (иметь смысл) сам по себе. Этот не делает. Ответы не должны говорить «как описано выше» в отношении других ответов. Пожалуйста, отредактируйте это так, чтобы оно имело смысл само по себе. Можно копировать части других ответов, если вы доверяете. (3) Большая часть того, что это говорит, кажется, уже сказано. Пожалуйста, дайте понять, какую новую информацию вы добавляете.
Скотт