Como registro um protocolo de URL personalizado no Windows?

Respostas:

63
  1. Vá para Startentão Finddigite regedit-> deve abrirRegistry editor

  2. Clique Right Mouseem HKEY_CLASSES_ROOTe New->Key

insira a descrição da imagem aqui

  1. Na chave, dê o nome em minúsculas pelo qual você deseja que os urls sejam chamados (no meu caso, será testus://sdfsdfsdf) e clique Right Mouseem testus-> então New-> String Valuee adicione URL protocolsem valor.

insira a descrição da imagem aqui

  1. Em seguida, adicione mais entradas como você fez com o protocolo ( Right Mouse New-> Key) e crie uma hierarquia como testus-> shell-> open-> commande commandmude (Default)para o caminho onde .exevocê deseja iniciar, se você deseja passar parâmetros para o seu exe, encapsule o caminho para o 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, vá para Internet Explorer(não Chromeou Firefox) e digite testus:have_you_seen_this_manisso deve disparar seu .exe(dar-lhe alguns prompts de que deseja fazer isso - diga Sim) e passar para args testus://have_you_seen_this_man.

Este é um exemplo de aplicativo de console 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.

Matas Vaitkevicius
fonte
3
Uau, essa coisa funciona. E não só no IE, mas também no Chrome!
user1974566
36

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

Jonas Engström
fonte
5
Eu estava escrevendo o aplicativo baseado em oauth e o procedimento descrito no MSDN funciona perfeitamente com Mozilla Firefox e Opera (11.6)
Viktor Latypov
11
Isso funciona em todos os navegadores do Windows. É uma coisa no nível do sistema operacional, não no nível do navegador.
Andrew Dunkman
7
Votei positivamente, mas por favor edite a resposta para incluir as informações relevantes do link de acordo com a política do SO. Obrigado!
dotancohen
Quais versões do Windows suportam isso?
ᆼ ᆺ ᆼ
21

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ê obterá o URL completo, não apenas os parâmetros de URL. Mas a URL pode estar sujeita a alguns maus tratos, além da já mencionada conversão de espaço% 20->. Ajuda ser conservador no design da sintaxe de URL. Não jogue aleatoriamente // ou você entrará na confusão que o arquivo: // é.

MSalters
fonte
O que você quer dizer exatamente com "bagunçar que o arquivo: //" é?
Maleev,
6
Não há mapeamento formal de arquivo: URLs para caminhos locais. Não há nem mesmo um consenso sobre o uso de duas ou três barras iniciais, ou o uso de barras para a frente ou para trás quando o caminho se refere a um diretório do Windows.
MSalters
Comentário tardio, eu sei. Mas também é possível acessar de alguma forma apenas os parâmetros de URL , sem o manipulador de protocolo?
Danilo Bargen
2
Isso soa como uma pergunta separada. Por favor, esclareça seus termos, no entanto. O manipulador de protocolo é o programa que recebe a URL. "Sem o manipulador de protocolo" não há ninguém para analisar a URL e acessar os parâmetros da URL.
MSalters