it-swarm-es.tech

¿Cómo registro un protocolo URL personalizado en Windows?

¿Cómo registro un protocolo personalizado con Windows para que al hacer clic en un enlace en un correo electrónico o en una página web se abra mi aplicación y se le pasen los parámetros de la URL?

50
lukeck

Creo que esto está cubierto en MSDN, consulte Registro de una aplicación en un protocolo URL .

27
Jonas Gulle
  1. Vaya a Start luego en Find escriba regedit -> debería abrir Registry editor

  2. Hacer clic Right Mouse en HKEY_CLASSES_ROOT luego New -> Key

enter image description here

  1. En la clave, indique el nombre en minúscula con el que desea que se llamen las URL (en mi caso será testus://sdfsdfsdf) luego haga clic Right Mouse en testus -> luego New -> String Value y añadir URL protocol sin valor.

enter image description here

  1. Luego agregue más entradas como lo hizo con el protocolo ( Right Mouse New -> Key) y crea una jerarquía como testus -> Shell -> open -> command y dentro de command cambio (Default) a la ruta donde .exe que desea iniciar es, si desea pasar parámetros a su exe, entonces ajuste la ruta a exe en "" y añadir "%1" para parecerse a: "c:\testing\test.exe" "%1"

enter image description here

  1. Para probar si funciona, vaya a Internet Explorer (no Chrome o Firefox) e ingrese testus:have_you_seen_this_man esto debería disparar tu .exe (le da algunas indicaciones de que desea hacer esto, diga Sí) y pase a args testus://have_you_seen_this_man.

Aquí hay una aplicación de consola de muestra para probar:

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 esto te ahorre algo de tiempo.

25

El enlace de MSDN es agradable, pero la información de seguridad no está completa. El registro del controlador debe contener "% 1", no% 1. Esta es una medida de seguridad, porque algunas fuentes de URL decodifican incorrectamente% 20 antes de invocar su controlador de protocolo personalizado.

PD. Obtendrá la URL completa, no solo los parámetros de la URL. Pero la URL podría estar sujeta a algún maltrato, además de la conversión de espacio% 20-> ya mencionada. Ayuda a ser conservador en su diseño de sintaxis de URL. No arrojes al azar // o te meterás en el lío que file: // es.

19
MSalters