Как заставить Chrome принимать обработчик пользовательских протоколов

Я могу настроить свое веб-приложение так, чтобы Chrome регистрировал пользовательский обработчик протокола "web+", чтобы он отображался в меню "Настройки" ->(Дополнительно)-> Конфиденциальность-> Настройки содержимого-> Обработчики-> Управление обработчиками.

Тем не менее, он показывает сайт как "нет", и хотя мой сайт отображается в раскрывающемся меню, когда я выбираю свой сайт в этом раскрывающемся меню, Windows выдает мне сообщение "Нет установленных приложений для открытия этого типа link (web+mycustomscheme)... Найдите приложение в Магазине ", и нажатие на сообщение Windows приводит к выпадающему списку с надписью"none" (и нажатие на ссылки в моей пользовательской схеме не работает).

Как заставить его принять мой сайт в качестве обработчика?

Это прекрасно работает в Firefox, кстати.

1 ответ

Решение

Что касается первой проблемы (получение Chrome для регистрации вашего приложения с помощью настраиваемого протокола), основанной на моей недавней работе, в которой я пытался активировать внешние URL-адреса настраиваемого протокола, то это то, что Chrome до сих пор не очень хорошо обрабатывает.

Ошибка здесь ( https://bugs.chromium.org/p/chromium/issues/detail?id=560809) связана с запуском этих протоколов из омнибокса или командной строки, но я также думаю, что это применимо, когда ссылка активируется через JavaScript (window.location или создание iframe с этим src).

Из того, что я могу сказать, это все еще нерешенная проблема.

Теперь - во второй части (где Windows говорит, что не знает, как обращаться с протоколом, и предлагает App Store). Вы должны зарегистрировать свой протокол в Windows через реестр. Это так же просто, как добавление специально отформатированного ключа в HKEY_CURRENT_USER\Software\Classes, как описано здесь: https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

Примечание. Если вы будете следовать инструкциям на этой странице, вы будете регистрировать обработчик протокола для всех пользователей этого компьютера, и приложению, выполняющему регистрацию, потребуется повышение прав (Admin). Если вы используете HKEY_CURRENT_USER\Software\Classes вместо HKEY_CLASSES_ROOT, ваша регистрация все равно будет отображаться в HKEY_CLASSES_ROOT, но для ее создания не потребуется администратор, но она будет работать только для текущего пользователя. Так что - выбери свой яд на этом.

HKEY_CLASSES_ROOT - это вид, состоящий из всех \ Software \ Classes из HLEY_CURRENT_USER в сочетании с HKEY_LOCAL_MACHINE. Я верю, но не подтвердил, что HKCU переопределяет HKLM, но если вы попытаетесь создать ключ непосредственно в HKEY_CLASSES_ROOT, он попытается записать его в HKLM, предоставляя вам доступ, в котором вам отказано, если у вас нет прав.

Надеюсь, это поможет. Удачи.

Другие вопросы по тегам