Як зареєструвати спеціальний протокол URL-адреси у Windows?


86

Як зареєструвати користувальницький протокол у Windows, щоб при натисканні посилання в електронному листі чи на веб-сторінці мою програму було відкрито, а параметри з URL-адреси передані їй?


Відповіді:


63
  1. Перейдіть до type Startin -> воно має відкритисяFindregeditRegistry editor

  2. Натисніть Right Mouseна HKEY_CLASSES_ROOTпотім New->Key

введіть тут опис зображення

  1. В Key дати ім'я малу , з допомогою якого ви хочете URLs називатися (у моєму випадку це буде testus://sdfsdfsdf) , а потім натисніть Right Mouseна testus-> потім New-> String Valueі додати URL protocolбез значення.

введіть тут опис зображення

  1. Потім додайте більше записів, як це було зроблено з протоколом ( Right Mouse New-> Key), і створіть ієрархію, як testus-> shell-> open->, commandі всередині commandзмініть (Default)шлях, де .exeви хочете запустити, якщо ви хочете передати параметри своєму exe, тоді оберніть шлях до exe в ""і додати, "%1"щоб виглядати так:"c:\testing\test.exe" "%1"

введіть тут опис зображення

  1. Щоб перевірити, чи працює це, перейдіть до Internet Explorer(not Chromeor Firefox) і введіть, testus:have_you_seen_this_manце має запустити ваш .exe(дасть вам деякі підказки, що ви хочете це зробити - скажіть Так) і перейти в аргументи testus://have_you_seen_this_man.

Ось зразок консольної програми для тестування:

using System;

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args!= null && args.Length > 0)
            Console.WriteLine(args[0]);
            Console.ReadKey();
        }
    }
}

Сподіваюся, це заощадить ваш час.


3
Ого, ця штука працює. І не тільки на IE, а й на Chrome!
user1974566

36

Я думаю, що це висвітлено у MSDN, будь ласка, див. Реєстрація програми у протоколі URL .


5
Я писав додаток, заснований на oauth, і процедура, описана в MSDN, чудово працює з Mozilla Firefox та Opera (11.6)
Віктор Латипов

11
Це працює у всіх браузерах Windows. Це річ на рівні ос, а не на рівні браузера.
Ендрю Данкман,

7
Я підтримав, але будь ласка, відредагуйте відповідь, включивши відповідну інформацію за посиланням відповідно до політики SO. Дякую!
dotancohen

Які версії Windows підтримують це?
ᆼ ᆺ ᆼ

21

Посилання MSDN приємне, але інформація про безпеку там не повна. Реєстрація обробника повинна містити "% 1", а не% 1. Це міра безпеки, оскільки деякі джерела URL-адрес неправильно декодують% 20 ​​перед тим, як викликати власний обробник протоколу.

PS. Ви отримаєте всю URL-адресу, а не лише параметри URL-адреси. Але URL-адреса може зазнати певного поводження, крім уже згаданого перетворення% 20-> пробілу. Це допомагає бути консервативним у дизайні синтаксису URL-адреси. Не кидайте випадкові //, інакше ви потрапите в хаос, яким є файл: //.


Що ви точно маєте на увазі під "безладом, що файл: //"?
Малєєв

6
Немає офіційного відображення файлу: URL-адреси до локальних шляхів. Навіть немає єдиної думки щодо використання двох-трьох провідних скісних рисок, а також використання прямої та зворотної скісних рисок, коли шлях посилається на каталог Windows.
MSalters

Пізній коментар, я знаю. Але це також можна яким - то чином отримати доступ до параметрів URL тільки без обробника протоколу?
Данило Барген

2
Це звучить як окреме питання. Однак, будь ласка, чітко викладіть свої умови. Обробник протоколу - це програма, яка отримує URL-адресу. "Без обробника протоколу" ніхто не може проаналізувати URL-адресу та отримати доступ до її параметрів.
MSalters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.