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

Resuelto lukeck asked hace 16 años • 0 respuestas

¿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?

lukeck avatar Sep 17 '08 13:09 lukeck
Aceptado
  1. Vaya a Startluego en Findtipo regedit-> debería abrir el editor del Registro

  2. Haga clic Right Mouseen HKEY_CLASSES_ROOTluego New->Key

ingrese la descripción de la imagen aquí

  1. En la Clave, proporcione el nombre en minúscula con el que desea que se llamen las URL (en mi caso será testus://sdfsdfsdf), luego haga clic Right Mouseen testus-> luego New-> String Valuey agregue URL Protocolsin valor.

ingrese la descripción de la imagen aquí

  1. Luego agregue más entradas como lo hizo con el protocolo ( Right Mouse New-> Key) y cree una jerarquía como testus-> shell-> open-> commandy dentro commandcambie (Default)la ruta donde .exedesea iniciar, si desea pasar parámetros a su exe, ajuste la ruta al exe adentro ""y agregue "%1"para que se vea como:"c:\testing\test.exe" "%1"

ingrese la descripción de la imagen aquí

  1. Para probar si funciona, vaya a Internet Explorer (no Chrome o Firefox) e ingrese testus:have_you_seen_this_manesto, debería activar su .exe(le indicará 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.

Matas Vaitkevicius avatar Jul 05 '2016 14:07 Matas Vaitkevicius

[Obsoleto: la información de MSDN ha sido reemplazada por una nueva página que aborda los problemas de seguridad]

El enlace de MSDN es bueno, pero la información de seguridad que contiene 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 ya mencionada conversión %20->espacio. Es útil ser conservador en el diseño de la sintaxis de su URL. No agregues // al azar o te meterás en el lío que es file://.

MSalters avatar Sep 17 '2008 10:09 MSalters

Si alguien quiere un archivo .reg para crear la asociación, consulte a continuación:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\duck]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\duck\shell]
[HKEY_CLASSES_ROOT\duck\shell\open]
[HKEY_CLASSES_ROOT\duck\shell\open\command] 
@="\"C:\\Users\\duck\\source\\repos\\ConsoleApp1\\ConsoleApp1\\bin\\Debug\\net6.0\\ConsoleApp1.exe\" \"%1\""

Péguelo en el bloc de notas, luego archivo -> guardar como -> duck.reg, y luego ejecútelo. Después de ejecutarlo, cuando escriba duck://arg-hereen Chrome, ConsoleApp1.exe se ejecutará con "arg-here" como argumento. Se requieren barras dobles para la ruta al archivo ejecutable y se deben utilizar comillas dobles.

Probado y funcionando en Windows 11 con Edge (la versión de Chrome) y Chrome

duck avatar Jul 17 '2022 02:07 duck