¿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?
Vaya a
Start
luego enFind
tiporegedit
-> debería abrir el editor del RegistroHaga clic Right Mouseen
HKEY_CLASSES_ROOT
luegoNew
->Key
- 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 Mouseentestus
-> luegoNew
->String Value
y agregueURL Protocol
sin valor.
- Luego agregue más entradas como lo hizo con el protocolo ( Right Mouse
New
->Key
) y cree una jerarquía comotestus
->shell
->open
->command
y dentrocommand
cambie(Default)
la ruta donde.exe
desea 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"
- Para probar si funciona, vaya a Internet Explorer (no Chrome o Firefox) e ingrese
testus:have_you_seen_this_man
esto, debería activar su.exe
(le indicará que desea hacer esto; diga Sí) y pase a argstestus://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.
[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://.
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-here
en 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