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

Я видел:

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

что это за первый раздел, где вы видите http и как называется?

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

9 ответов


часть с HTTP://,FTP://, etc называются схемы URI

вы можете зарегистрировать в реестре.

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) PathToExecutable

источники:https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml, http://msdn.microsoft.com/en-us/library/aa767914 (v=против 85).aspx


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

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\""

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

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

  1. реализуйте интерфейс IInternetProtocol.
  2. реализуйте интерфейс IInternetProtocolRoot.
  3. реализуйте интерфейс IClassFactory.
  4. необязательно. Реализуйте интерфейс IInternetProtocolInfo. Поддержка протокола HTTP приводится к сделке обработчик.
  5. если реализован IInternetProtocolInfo, обеспечьте поддержку PARSE_SECURITY_URL и PARSE_SECURITY_DOMAIN, чтобы диспетчер зон безопасности URL мог правильно обрабатывать безопасность. Написать код для обработчика протокола.
  6. поддержка BINDF_NO_UI и BINDF_SILENTOPERATION.
  7. добавьте подраздел для обработчика протокола в реестр в разделе HKEY_CLASSES_ROOT\PROTOCOLS\Handler.
  8. создайте строковое значение CLSID в подразделе и установите строку в CLSID обработчика протокола.

посмотреть об асинхронных подключаемых протоколах на MSDN для получения более подробной информации на стороне Windows. Существует также образец в Windows SDK.

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

наконец, как охранник, я должен указать, что этот код должен быть закален в бою. Это на высоте. риск, потому что для этого вы не можете сделать это в управляемом коде и должны сделать это на C++ (я полагаю, вы можете использовать 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 если вы понятия не имеете, о чем я говорю.


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


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

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


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

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

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

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


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


Протокол?

Я нашел это, похоже, это локальная настройка для компьютера...

http://kb.mozillazine.org/Register_protocol


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