Совместное использование схемы URI приложения в Windows 8

Я пишу приложение, которое регистрирует протокол «tel» в Windows 8, поэтому, когда я открываю «Пуск»> «Выполнить», введите tel: 1234 и нажмите «Ввод», приложение запускается и звонит по телефону 1234. Это успешно работает в XP, Win7. и Win8. Однако на Win8 я обнаружил, что при установке Google Chrome он «берет на себя» обработку протокола tel, поэтому, когда я снова запускаю tel: 1234, вместо моего приложения запускается Chrome. Chrome не берет на себя протокол телефона в Win7 или XP. Я хотел бы понять, в чем проблема.

В настоящее время мое приложение регистрирует протокол Tel путем добавления следующих записей реестра, как описано в Регистрация приложения в схеме URI на MSDN:

HKEY_CLASSES_ROOT\tel
@="URL:My Tel Protocol Handler""URL Protocol"=""
[HKEY_CLASSES_ROOT\tel\DefaultIcon]
@="C:\\MyTelProtocol.exe"
[HKEY_CLASSES_ROOT\tel\shell]

[HKEY_CLASSES_ROOT\tel\shell\open]

[HKEY_CLASSES_ROOT\tel\shell\open\command]
@="\"C:\\MyTelProtocol.exe\" -URI %1"

Я обнаружил, что Google Chrome не перезаписывает данные моего реестра своими собственными. Вместо этого он, кажется, регистрирует обработчик протокола другим способом, но я не могу понять, как сделать то же самое. У кого-нибудь есть идея, почему Windows 8 обрабатывает это по-другому?

Заранее спасибо,
Matt

1

Решение

Вам необходимо удалить раздел реестра «tel», который Chrome добавляет во время установки.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Clients \ StartMenuInternet \ Google
Chrome \ Возможности \ UrlAssociations

После этого вам нужно нажать win 8, чтобы перевести базу реестра (перезапуск или другой способ), и jabber станет приложением по умолчанию для TEL: URI;).

1

Другие решения

Вот некоторые рекомендации по Модель типа файлов и ассоциаций протокола (Windows), который относится к Windows 8. Может быть, попробовать это?

Это codereview предполагает, что код для обработчиков протоколов Chrome находится в этот файл, на случай, если это пригодится.

0

По вопросам рекламы [email protected]