Запуск схемы URI

Мне была поставлена ​​задача создать протокол, похожий на callto:, который - при нажатии на ссылку с ним - автоматически запустил установленную заявку.

Я следил за советом Майкрософт о том, как должна выглядеть схема.

Моя схема выглядит так:

HKEY_CLASSES_ROOT
   slican
       URL Protocol = ""
       DefaultIcon (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe,1"
       shell
            open
                command (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe" "%1""

Я думал, что все было и проверено с помощью

 <a href="slican:test">test link</a>
 <a href="slican:0049325778421">test telephone link</a>

Не было никакой реакции. Internet Explorer спросил меня, хочу ли я искать программу, которая может открыть контент, и Chrome ответил ничем, как если бы я нажал javascript: void (0).

Как это сделать?

Благодарим за помощь!

Ответ 1

Регистрация, которую вы показываете, отлично работает для меня, когда я пытаюсь сделать это в Windows 7. Локальное приложение, которое я зарегистрировал вместо SlicanP.exe, работало нормально, когда я вызывал slican: URL из Start | Run Start | Run меню и из адресной строки Windows Explorer. Так что регистрация работает.

Имейте в виду, что Internet Explorer работает в контексте безопасности с более низкой целостностью, поэтому он может не иметь прав для запуска локальных программ. Когда я попытался щелкнуть HTML-ссылку на URL-адрес slican: или ввести URL-адрес slican: в адресной строке, IE столкнулся с проблемой при запуске локального приложения (даже после запроса разрешения). Я должен был запустить IE как администратор, тогда локальное приложение работало просто отлично.

Кроме того, вам действительно не следует создавать ключ HKEY_CLASSES_ROOT\slican напрямую. HKEY_CURRENT_USER\Software\Classes\slican создайте HKEY_CURRENT_USER\Software\Classes\slican (только для текущего пользователя) или HKEY_LOCAL_MACHINE\Software\Classes\slican (для всех пользователей). Обратитесь к MSDN для более подробной информации:

Ключ HKEY_CLASSES_ROOT

Объединенный вид HKEY_CLASSES_ROOT

Обновление: поскольку оно работает в Windows 7, Microsoft, вероятно, изменила способ регистрации схем URL в Windows 8. Например, приложения телефона/магазина используют активацию URI:

Активация URI (XAML).

Активация URI (HTML)

Документация говорит, что есть два способа зарегистрировать пользовательскую схему URI:

Internet Explorer использует два механизма для регистрации новых подключаемых обработчиков протоколов. Первый способ заключается в регистрации имени схемы URI и связанного с ней приложения, чтобы все попытки перейти к URI с использованием этой схемы запускали приложение (например, регистрируя приложения для обработки mailto: или news: URI). Во втором методе используется API асинхронных подключаемых протоколов, который позволяет определять новые протоколы путем сопоставления схемы URI с классом.

Вы делаете первый. Попробуйте использовать второе вместо.

Однако я только что заметил, что "Асинхронные подключаемые протоколы" перечислены в MSDN в разделе "Устаревшие API" и имеют следующее примечание:

Реализации сторонних протоколов не будут загружаться в приложениях Магазина Windows, использующих JavaScript, или в Internet Explorer в новом интерфейсе Windows.

Так что это может или не может работать в Windows 8.

Обновление: я только что нашел это:

Рекомендации по типам файлов и URI

В Windows 8 отношения между приложениями и поддерживаемыми ими типами файлов отличаются от предыдущих версий Windows.

Пошаговое руководство. Использование Windows 8 Custom Protocol Activation

В Windows 8 изменилась модель типа файла и ассоциации протокола. Приложения больше не могут программно устанавливать себя в качестве обработчика по умолчанию для типа файла или протокола. Вместо этого теперь пользователь всегда контролирует, какой обработчик по умолчанию используется для типа файла или протокола.

Ваше приложение может использовать существующие протоколы для связи, такие как mailto, или создать собственный протокол. Расширение активации протокола позволяет вам определить собственный протокол или зарегистрироваться для обработки существующего протокола.

Также взгляните на это:

Настройка mailto: обработчик протокола программно в Windows 8

И это:

Стандартные программы

Ответ 2

если вы перейдете в папку C:\Users\\AppData\Local\Google\Chrome\User Data​​p >

Вы можете редактировать файл локального состояния

Поиск протокола_handler

Синтаксис здесь - это пара значений ключа. Обычно я копирую два mailto: и убедитесь, что вы установили свои протоколы в false. Это будет означать, что хром будет обрабатывать ваши новые протоколы как события URI_Handler

Ответ 3

Если у вас возникли проблемы с настройкой настраиваемой схемы URI, вы можете сравнить свою собственную конфигурацию с существующей. Например, "HKEY_CLASSES_ROOT/mailto" - скорее всего, у вас есть это уже в вашей системе.