¿Cómo creo mi propio protocolo de URL? (por ejemplo, tan: // …)

He visto:

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

¿Cuál es la primera sección donde ves http y similares llamados?

¿Puedo registrar el mío?

La porción con HTTP:// , FTP:// , etc. se llaman esquemas URI

Puede registrar el suyo 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

Abra el bloc de notas y pegue el código debajo en él. Cambie “YourApp” en el nombre de su aplicación. Guárdelo en YourApp.reg y ejecútelo haciendo clic en él en el explorador. ¡Eso es! ¡Aclamaciones! Erwin 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\"" 

Esto es diferente para cada navegador, en IE y Windows, necesita crear lo que llaman un manejador 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 manejador de transacciones brinda 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 zona de seguridad de URL pueda manejar la seguridad correctamente. Escriba el código para su manejador de protocolo.
  6. Proporcione soporte para BINDF_NO_UI y BINDF_SILENTOPERATION.
  7. Agregue una subclave para su manejador de protocolo en el registro bajo HKEY_CLASSES_ROOT \ PROTOCOLS \ Handler.
  8. Cree un valor de cadena, CLSID, debajo de la subclave y establezca la cadena en el CLSID de su manejador de protocolo.

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

Un rápido Google también mostró este artículo en codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx .

Finalmente, como agente de seguridad, tengo que señalar que este código debe ser reforzado. Tiene un alto riesgo porque para hacerlo de manera confiable no se puede hacer en código administrado y tiene que hacerlo en C ++ (supongo que se puede usar VB6). Debería considerar si realmente necesita hacer esto y, si lo hace, diseñarlo cuidadosamente y codificarlo de manera segura. Un atacante puede controlar fácilmente el contenido que se le pasa simplemente incluyendo un enlace en una página. Por ejemplo, si tiene un desbordamiento de búfer simple, entonces nadie mejor que esto: Click me for free porn

Considere la posibilidad de utilizar strsafe y los nuevos métodos CRT seguros incluidos en los comstackdores VC8 y anteriores. Consulte http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx si no tiene idea de lo que estoy hablando.

Aquí hay una lista de los esquemas de URI registrados. Cada uno tiene un RFC, un documento que lo define, que es casi un estándar. El RFC le dice a los desarrolladores de nuevas aplicaciones (tales como navegadores, clientes ftp, etc.) lo que necesitan para ser compatibles. Si necesita un nuevo protocolo de nivel base, puede usar uno nuevo no registrado. Las otras respuestas te dicen cómo. Tenga en cuenta que puede hacer muchas cosas con los protocolos existentes, obteniendo así sus implementaciones existentes.

Para la mayoría de los productos de Microsoft (Internet Explorer, Office, diálogos de “abrir archivo”, etc.) puede registrar una aplicación para que se ejecute cuando se abre el URI con el prefijo apropiado. Esta es una parte de la explicación más común: cómo implementar su propio protocolo.

Para Mozilla, la explicación está aquí , Java – aquí .

Se llama protocolo. Lo único que le impide hacer su propio protocolo es que debe:

  1. Escriba un navegador o agente de usuario de algún tipo que comprenda ese protocolo, tanto en su formato de URL como en el formato de datos real
  2. Escribe un servidor que entienda ese protocolo
  3. Preferiblemente, tenga una especificación para el protocolo para que el navegador y el servidor puedan continuar trabajando juntos.

Windows hace que el # 1 sea realmente fácil, y en muchos casos esto es todo lo que realmente necesitas. Verbigracia:

Registrar una aplicación a un protocolo URL

La primera sección se llama protocolo y sí puede registrar la suya propia. En Windows (donde asumo que estás haciendo esto, dada la etiqueta C # – lo siento fanáticos de Mono), se hace a través del registro .

Un protocolo?

Encontré esto, parece ser una configuración local para una computadora …

http://kb.mozillazine.org/Register_protocol

En realidad no tienes que hacer ningún registro como tal. He visto muchos progtwigs, como emule, crear su propio protocolo específico (así es como creo que se llama). Después de eso, básicamente solo tiene que establecer algunos valores en el registro en cuanto a qué progtwig maneja ese protocolo. No estoy seguro de si hay algún registro oficial de especificadores de protocolo. No hay mucho que le impida crear su propio especificador de protocolo para su propia aplicación si desea que las personas abran su aplicación desde su navegador.