¿Cómo creo mi propio protocolo URL? (por ejemplo, entonces: //...) [cerrado]

Resuelto Michael Beck asked hace 15 años • 8 respuestas

He visto:

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

¿ Cómo se llama esa primera sección donde ves httpy cosas así?

¿Puedo registrar el mío?

Michael Beck avatar Dec 23 '08 22:12 Michael Beck
Aceptado

La parte con HTTP://, FTP://, etc. se denomina esquemas URI.

Puedes registrar el tuyo a través del registro.

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

Fuentes: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml , http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

James Gregory avatar Dec 23 '2008 15:12 James Gregory

Abra el bloc de notas y pegue el siguiente código en él. Cambie "YourApp" por el nombre de su aplicación.

Guárdelo en YourApp.reg y ejecútelo haciendo clic en él en el explorador.

¡Eso es todo!

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\""
Codebeat avatar Sep 01 '2011 22:09 Codebeat

Esto es diferente para cada navegador; en IE y Windows es necesario crear lo que ellos llaman un controlador de protocolo conectable.

Los pasos básicos son los siguientes:

  1. Implemente la interfaz IInternetProtocol.
  2. Implemente la interfaz IInternetProtocolRoot.
  3. Implemente la interfaz IClassFactory.
  4. Opcional. Implemente la interfaz IInternetProtocolInfo. El controlador de transacciones proporciona soporte para el protocolo HTTP.
  5. Si se implementa IInternetProtocolInfo, proporcione soporte para PARSE_SECURITY_URL y PARSE_SECURITY_DOMAIN para que el administrador de la zona de seguridad de URL pueda manejar la seguridad correctamente. Escriba el código para su controlador de protocolo.
  6. Proporcionar soporte para BINDF_NO_UI y BINDF_SILENTOPERATION.
  7. Agregue una subclave para su controlador de protocolo en el registro en HKEY_CLASSES_ROOT\PROTOCOLS\Handler.
  8. Cree un valor de cadena, CLSID, bajo la subclave y establezca la cadena en el CLSID de su controlador de protocolo.

Consulte Acerca de los protocolos conectables asíncronos en MSDN para obtener más detalles sobre el lado de Windows. También hay una muestra en el SDK de Windows.

Una búsqueda rápida en Google también mostró este artículo sobre codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx .

Finalmente, como experto en seguridad, debo señalar que este código necesita ser reforzado. Tiene un alto riesgo porque para hacerlo de manera confiable no puede hacerlo en código administrado y debe hacerlo en C++ (supongo que podría usar VB6). Debe considerar si realmente necesita hacer esto y, si es así, diseñarlo cuidadosamente y codificarlo de forma segura. Un atacante puede controlar fácilmente el contenido que se le transmite simplemente incluyendo un enlace en una página. Por ejemplo, si tiene un desbordamiento de búfer simple, será mejor que nadie haga esto:<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

Considere seriamente el uso de strsafe y los nuevos métodos CRT seguros incluidos en los compiladores VC8 y superiores. Consulte http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx si no tiene idea de lo que estoy hablando.

Peter Oehlert avatar Dec 23 '2008 16:12 Peter Oehlert