Ответ 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
Обновление: поскольку оно работает в Windows 7, Microsoft, вероятно, изменила способ регистрации схем URL в Windows 8. Например, приложения телефона/магазина используют активацию URI:
Документация говорит, что есть два способа зарегистрировать пользовательскую схему 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
И это: