2008-09-17 53 views
40

¿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?¿Cómo registro un protocolo de URL personalizado en Windows?

+0

Posible duplicado de [¿cómo puedo crear mi propio protocolo de URL? (por ejemplo, así: // ...)] (http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) –

Respuesta

23

Creo que esto está cubierto en MSDN, vea Registering an Application to a URL Protocol.

+0

Esto solo funcionará para ES DECIR. – Oded

+5

Estaba escribiendo la aplicación basada en oauth y el procedimiento descrito en MSDN funciona perfectamente con Mozilla Firefox y Opera (11.6) –

+9

Esto funciona en todos los navegadores en Windows. Es algo de os-level, no de navegador. –

19

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

PS. Obtendrá la URL completa, no solo los parámetros de URL. Pero la URL puede estar sujeta a algunos malos tratos, además de la ya mencionada conversión de espacio% 20->. Ayuda a ser conservador en el diseño de sintaxis de su URL. No arroje al azar // o se meterá en el lío de ese archivo: // es.

+0

¿Qué quiere decir exactamente con "mess that the file: //"? – Maleev

+5

No hay una asignación formal de archivos: URL a rutas locales. Ni siquiera hay un consenso sobre el uso de dos o tres barras diagonales principales, o el uso de barras diagonales hacia delante o hacia atrás cuando la ruta hace referencia a un directorio de Windows. – MSalters

+0

Último comentario, lo sé. ¿Pero también es posible acceder de alguna manera a los parámetros de URL * solo *, sin el manejador de protocolo? –

10
  1. Ir a Start después en Find tipo regedit -> se debe abrir Registry editor

  2. Haga clic derecho del ratón en HKEY_CLASSES_ROOT continuación New ->Key

enter image description here

  1. En la llave dan el nombre en minúsculas con el que desea URLs a ser llamados (en mi caso, será testus://sdfsdfsdf) luego haga clic en derecho del ratón en testus -> luego New ->String Value y agregue URL protocol sin valor.

enter image description here

  1. A continuación, añadir más entradas como lo hizo con el protocolo (derecho del ratónNew ->Key) y crear la jerarquía como testus ->shell ->open ->command y dentro de command cambie (Default) a la ruta donde .exe desea iniciar es, si desea pasar parámetros a su exe, envuelva la ruta a exe en "" y agregue "%1" para que parezca: "c:\testing\test.exe" "%1"

enter image description here

  1. Para probar si funciona ir a Internet Explorer (no Chrome o Firefox) y escriba testus:have_you_seen_this_man esto debería despedir a su .exe (dar le indica que desea hacer esto - diga Sí) y pasa a args testus://have_you_seen_this_man.

Aquí hay aplicación de consola de ejemplo 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(); 
     } 
    } 
} 

Hope esto le ahorra tiempo.

Cuestiones relacionadas