Como faço para criar meu próprio protocolo de URL? (por exemplo, assim: //…)

Eu tenho visto:

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

Qual é a primeira seção em que você vê http e similares?

Posso registrar meu próprio?

A parte com o HTTP:// , FTP:// , etc são chamados de esquemas de URI

Você pode registrar o seu próprio através do registro.

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

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

Abra o bloco de notas e cole o código abaixo nele. Altere “YourApp” no nome do seu aplicativo. Salve-o em YourApp.reg e execute-o clicando nele no explorer. É isso aí! Felicidades! 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\"" 

Isso é diferente para cada navegador, no IE e no Windows, você precisa criar o que eles chamam de manipulador de protocolo conectável.

Os passos básicos são os seguintes:

  1. Implemente a interface IInternetProtocol.
  2. Implemente a interface IInternetProtocolRoot.
  3. Implemente a interface IClassFactory.
  4. Opcional. Implemente a interface IInternetProtocolInfo. Suporte para o protocolo HTTP é fornecido pelo manipulador de transação.
  5. Se IInternetProtocolInfo for implementado, forneça suporte para PARSE_SECURITY_URL e PARSE_SECURITY_DOMAIN para que o gerenciador da zona de segurança da URL possa manipular a segurança corretamente. Escreva o código para o manipulador de protocolo.
  6. Fornecer suporte para BINDF_NO_UI e BINDF_SILENTOPERATION.
  7. Adicione uma subchave para o manipulador de protocolo no registro em HKEY_CLASSES_ROOT \ PROTOCOLS \ Handler.
  8. Crie um valor de seqüência de caracteres, CLSID, sob a subchave e defina a seqüência de caracteres para o CLSID do manipulador de protocolo.

Consulte Sobre protocolos conectáveis ​​asynchronouss no MSDN para obter mais detalhes no lado do Windows. Há também uma amostra no SDK do Windows.

Um rápido google também mostrou este artigo no codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx .

Finalmente, como segurança, devo salientar que esse código precisa ser fortalecido. É um risco alto, porque para fazê-lo de forma confiável você não pode fazê-lo no código gerenciado e tem que fazê-lo em C ++ (suponho que você poderia usar o VB6). Você deve considerar se realmente precisa fazer isso e, se fizer isso, projetá-lo com cuidado e codificá-lo com segurança. Um atacante pode controlar facilmente o conteúdo que é passado para você simplesmente incluindo um link em uma página. Por exemplo, se você tem um estouro de buffer simples, então é melhor ninguém fazer isso: Click me for free porn

Considere com ênfase o uso de strsafe e os novos methods de CRT seguros incluídos nos compiladores VC8 e acima. Veja http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx se você não tem ideia do que estou falando.

Aqui está uma lista dos esquemas de URI registrados. Cada um tem um RFC – um documento definindo-o, que é quase um padrão. O RFC informa aos desenvolvedores de novos aplicativos (como navegadores, clientes FTP, etc.) o que eles precisam suportar. Se você precisar de um novo protocolo de nível básico, poderá usar um protocolo não registrado. As outras respostas dizem como. Por favor, tenha em mente que você pode fazer muitas coisas com os protocolos existentes, ganhando assim as implementações existentes.

Para a maioria dos produtos Microsoft (Internet Explorer, Office, checkboxs de diálogo “open file”, etc.), você pode registrar um aplicativo para ser executado quando o URI com o prefixo apropriado é aberto. Esta é uma parte da explicação mais comum – como implementar seu próprio protocolo.

Para Mozilla a explicação é aqui , Java – aqui .

É chamado o protocolo. A única coisa que impede você de criar seu próprio protocolo é:

  1. Escreva um navegador ou agente de usuário de alguns tipos que entenda esse protocolo, tanto em seu formato de URL quanto no formato de dados real.
  2. Escreva um servidor que entenda esse protocolo
  3. De preferência, tenha uma especificação para o protocolo para que o navegador e o servidor possam continuar a trabalhar juntos.

O Windows torna o número 1 realmente fácil e, em muitos casos, isso é tudo o que você realmente precisa. Viz:

Registrando um aplicativo em um protocolo de URL

A primeira seção é chamada de protocolo e sim você pode registrar a sua. No Windows (onde eu estou supondo que você está fazendo isso com a tag C # – desculpe fãs da Mono), isso é feito através do registro .

Um protocolo?

Eu encontrei isso, parece ser uma configuração local para um computador …

http://kb.mozillazine.org/Register_protocol

Você não precisa fazer nenhum registro como tal. Eu vi muitos programas, como o emule, criarem seu próprio protocolo específico (isso é o que eu acho que é chamado). Depois disso, basicamente você só precisa definir alguns valores no registro para saber qual programa manipula esse protocolo. Não tenho certeza se há algum registro oficial de especificadores de protocolo. Não há muito o que impedir você de criar seu próprio especificador de protocolo para seu próprio aplicativo, se quiser que as pessoas abram seu aplicativo a partir do navegador.