Como faço para registrar um protocolo de URL personalizado no Windows?

Como faço para registrar um protocolo personalizado com o Windows para que, ao clicar em um link em um e-mail ou em uma página da web, meu aplicativo seja aberto e os parâmetros do URL sejam passados ​​para ele?

Acho que isso é abordado no MSDN, consulte Registrando um aplicativo em um protocolo de URL .

O link do MSDN é bom, mas as informações de segurança não estão completas. O registro do manipulador deve conter “% 1”, não% 1. Esta é uma medida de segurança, porque algumas origens de URL decodificam incorretamente% 20 antes de chamar seu manipulador de protocolo personalizado.

PS. Você receberá o URL inteiro, não apenas os parâmetros de URL. Mas a URL pode estar sujeita a maus tratos, além da já mencionada% 20-> conversão de espaço. Isso ajuda a ser conservador em seu design de syntax de URL. Não jogue aleatoriamente // ou você entrará na bagunça que file: // é.

  1. Vá em Start , em seguida, em Find tipo regedit -> deve abrir o Registry editor

  2. Clique com o HKEY_CLASSES_ROOT direito do mouse em HKEY_CLASSES_ROOT e clique em New -> Key

insira a descrição da imagem aqui

  1. Na chave, dê o nome minúsculo pelo qual você deseja que os urls sejam chamados (no meu caso, será testus://sdfsdfsdf ) e então clique com o testus direito em testus -> New -> String Value e adicione o URL protocol sem valor.

insira a descrição da imagem aqui

  1. Em seguida, adicione mais inputs como você fez com o protocolo ( Right Mouse New -> Key ) e crie hierarquia como testus -> shell -> open -> command e dentro do command change (Default) para o caminho onde. Se você quiser passar parâmetros para o seu exe, coloque o caminho para "" exe em "" e adicione "%1" para se parecer com: "c:\testing\test.exe" "%1"

insira a descrição da imagem aqui

  1. Para testar se funciona no Internet Explorer (e não no Chrome ou Firefox ) e insira testus:have_you_seen_this_man isso deve triggersr seu .exe (dar alguns prompts que você quer fazer isso – dizer Yes) e passar para args testus://have_you_seen_this_man .

Aqui está o app do console de amostra para testar:

 using System; namespace Testing { class Program { static void Main(string[] args) { if (args!= null && args.Length > 0) Console.WriteLine(args[0]); Console.ReadKey(); } } } 

Espero que isso economize algum tempo.