Як змінити браузер за замовчуванням на програму, що не міститься в списку в 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 там перераховані всі браузери, і кожен повинен мати вищевказану структуру.

Перехід до клавіші Capability в regedit

З інспекції видно, що якби я хотів перейти на Firefox, я б використав FirefoxURLзначення резервного копіювання в UrlAssociations.

(Однак, якщо ви не хотіли копатися так, є швидкий обман: просто встановіть браузер, який ви хочете, як за замовчуванням, і оновіть regedit, щоб побачити, що браузер встановив для UserChoice!)

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

Двічі перевірити програму за замовчуванням на панелі керування

Тепер, якщо ви звернули пильну увагу, ви, можливо, помітили пару недоліків у всьому цьому:

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

  2. Firefox ProgId під цим 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. Здається, це зберігає всі зареєстровані програми, про які можна повідомити Windows про їх функціональність.

Отже, встановивши StartMenuInternetключ, додайте ключ, на HKLM\SOFTWARE\RegisteredApplicationsякий вказуєте Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities- так, саме так, починаючи з Software\:

Знімок екрана regedit (я не можу вставити зображення, поки не отримаю 10 повторень ...)


-1

Для того, щоб ваша програма (YName.exe) вважалася браузером, її потрібно зареєструвати:

1) ... StartMenuInternet - як описано вище,

HKCU \ Software \ Клієнти \ StartMenuInternet \ YName \ Можливості \ URLAсоціації

http = YNameURL

https = YNameURL

2) HKCU \ Software \ RegisteredApplications - як описано вище:

YName = Програмне забезпечення \ Клієнти \ StartMenuInternet \ YName \ Можливості

3) команда HKCU \ Software \ Класи \ YNameURL \ shell \ open \ команда

@ = Шлях \ YName.exe

4) HKCU \ Software \ Класи \ Програми \ YName.exe \ shell \ open \ команда

@ = Шлях \ YName.exe



1
Ласкаво просимо до Супер Користувача ! Зверніть увагу, що відповіді повинні бути англійською (повністю).
Глорфіндель

(1)  Super User - це веб-сайт, призначений лише для англійської мови. Видаліть частини своєї відповіді, які не є англійською мовою. (2) Кожна відповідь повинна мати можливість стояти (мати сенс) сама. Цього немає. У відповідях не повинно бути сказано "як описано вище" з посиланням на інші відповіді. Будь ласка, відредагуйте це, щоб воно мало сенс саме по собі. Добре копіювати частини інших відповідей до тих пір, поки ви надаєте кредит. (3) Більшість того, що це говорить, здається, вже сказано. Будь ласка, уточніть, яку нову інформацію ви додаєте.
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.