Как создать собственный протокол URL? (например, так://...)

Хорошо, пожалуйста, медведь со мной, потому что это трудно объяснить.

Я видел...

  • http://www...
  • ftp://blah.blah...
  • file://blah.blah...
  • unreal://blah.blah...
  • mailto://blah.blah...

Что это за первый раздел, где вы видите http и т.д.?

Могу ли я зарегистрировать свой собственный?

Ответ 2

Откройте блокнот и вставьте в него код ниже. Измените "YourApp" на свое имя приложения. Сохраните его в YourApp.reg и выполните его, щелкнув по нему в проводнике. Это! Ура! Эрвин Хаантес

REGEDIT4

[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""

[HKEY_CLASSES_ROOT\YourApp\shell]

[HKEY_CLASSES_ROOT\YourApp\shell\open]

[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""

Ответ 3

Для каждого браузера это отличается, в IE и окнах вам нужно создать то, что они называют подключаемым обработчиком протокола.

Основные шаги следующие:

  • Внедрение интерфейса IInternetProtocol.
  • Внедрить интерфейс IInternetProtocolRoot.
  • Внедрить интерфейс IClassFactory.
  • Дополнительно. Внедрите интерфейс IInternetProtocolInfo. Поддержка протокола HTTP обеспечивается обработчиком транзакций.
  • Если реализована версия IInternetProtocolInfo, обеспечите поддержку PARSE_SECURITY_URL и PARSE_SECURITY_DOMAIN, чтобы менеджер зоны безопасности URL-адресов мог корректно обрабатывать безопасность. Напишите код для вашего обработчика протокола.
  • Предоставьте поддержку BINDF_NO_UI и BINDF_SILENTOPERATION.
  • Добавить подраздел для вашего обработчика протокола в реестре в разделе HKEY_CLASSES_ROOT\PROTOCOLS\Handler.
  • Создайте строковое значение, CLSID, в подразделе и установите строку в CLSID вашего обработчика протокола.

Подробнее о стороне окна см. Об асинхронных подключаемых протоколах на MSDN. В окне SDK также есть образец.

Быстрый google также показал эту статью на codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx.

Наконец, как парень безопасности, я должен указать, что этот код должен быть ожесточен. Это очень рискованно, потому что для того, чтобы сделать это надежно, вы не можете сделать это в управляемом коде и должны сделать это на С++ (я полагаю, вы могли бы использовать VB6). Вы должны подумать о том, действительно ли вам нужно это сделать, и если вы это сделаете, тщательно продумайте и скопируйте его. Злоумышленник может легко управлять содержимым, которое передается вам, просто включая ссылку на страницу. Например, если у вас есть простое переполнение буфера, тогда лучше не делать этого: <a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

Внимательно рассмотрите возможность использования strsafe и новых безопасных методов CRT, включенных в компиляторы VC8 и выше. См. http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx, если вы не представляете, о чем я говорю.

Ответ 4

Вот список зарегистрированных схем URI. Каждый из них имеет RFC - документ, определяющий его, что является почти стандартом. RFC сообщает разработчикам новых приложений (таких как браузеры, ftp-клиенты и т.д.), Что им нужно поддерживать. Если вам нужен новый протокол базового уровня, вы можете использовать незарегистрированный. Другие ответы говорят вам, как это сделать. Пожалуйста, имейте в виду, что вы можете делать много вещей с существующими протоколами, тем самым получая их существующие реализации.

Ответ 5

Для большинства продуктов Microsoft (Internet Explorer, Office, "открыть файл" ) и т.д. вы можете зарегистрировать приложение, которое будет запускаться при URI с соответствующим префиксом. Это часть более распространенного объяснение - как реализовать свой собственный протокол.

Для Mozilla объяснение здесь, Java - здесь.

Ответ 6

Он назвал протокол. Единственное, что мешает вам создать собственный протокол, - это:

  • Напишите браузер или пользовательский агент некоторых видов, который понимает этот протокол, как в форме URL-адреса, так и в фактическом формате данных
  • Напишите сервер, который понимает этот протокол
  • Предпочтительно иметь спецификацию протокола, чтобы браузер и сервер могли продолжать работать вместе.

Windows делает # 1 очень простым, во многих случаях это все, что вам действительно нужно. Viz:

Регистрация приложения в протоколе URL

Ответ 7

Первый раздел называется протоколом, и да, вы можете зарегистрироваться самостоятельно. В Windows (где я предполагаю, что вы делаете это, учитывая тег С# - извините поклонников Mono), он сделал через реестр.

Ответ 9

Вам действительно не нужно регистрироваться как таковое. Я видел много программ, таких как emule, и создал свой собственный специфический протокол (что, как я думаю, он называл). После этого вам просто нужно установить некоторые значения в реестре относительно того, какая программа обрабатывает этот протокол. Я не уверен, есть ли какой-либо официальный реестр спецификаторов протокола. Существует не так много, чтобы остановить вас от создания своего собственного спецификатора протокола для вашего собственного приложения, если вы хотите, чтобы люди открывали ваше приложение из своего браузера.