Jak zarejestrować niestandardowy protokół adresu URL w systemie Windows?

Odpowiedzi:

63
  1. Idź do, Starta następnie Findwpisz regedit-> powinno się otworzyćRegistry editor

  2. Kliknij Right Mousena HKEY_CLASSES_ROOTpotem New->Key

wprowadź opis obrazu tutaj

  1. W kluczu podać nazwę małymi literami, w którym chcesz się nazywać URL (w moim przypadku to będzie testus://sdfsdfsdf), a następnie kliknąć Right Mousena testus-> następnie New-> String Valuei dodać URL protocolbez wartości.

wprowadź opis obrazu tutaj

  1. Następnie dodaj więcej wpisów, tak jak w przypadku protokołu ( Right Mouse New-> Key) i utwórz hierarchię, taką jak testus-> shell-> open-> commandi wewnętrzną commandzmianę (Default)ścieżki, w której .exechcesz uruchomić, jeśli chcesz przekazać parametry do swojego exe, a następnie zawiń ścieżkę do exe w ""i dodać "%1"wyglądać:"c:\testing\test.exe" "%1"

wprowadź opis obrazu tutaj

  1. Aby sprawdzić, czy to działa, przejdź do Internet Explorer(nie Chromelub Firefox) i wprowadź testus:have_you_seen_this_manto, co powinno uruchomić twój .exe(dać ci kilka podpowiedzi, że chcesz to zrobić - powiedz Tak) i przejść do argumentów testus://have_you_seen_this_man.

Oto przykładowa aplikacja konsolowa do przetestowania:

using System;

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

Mam nadzieję, że zaoszczędzi ci to trochę czasu.

Matas Vaitkevicius
źródło
3
Wow, to działa. I to nie tylko w IE, ale także w Chrome!
user1974566
36

Myślę, że jest to objęte MSDN, zobacz Rejestracja aplikacji w protokole URL .

Jonas Engström
źródło
5
Pisałem aplikację opartą na oauth, a procedura opisana w MSDN działa doskonale z Mozilla Firefox i Opera (11.6)
Viktor Latypov
11
Działa to we wszystkich przeglądarkach w systemie Windows. To rzecz na poziomie systemu operacyjnego, a nie na poziomie przeglądarki.
Andrew Dunkman,
7
Głosowałem za, ale edytuj odpowiedź, tak aby zawierała odpowiednie informacje z linku zgodnie z polityką SO. Dzięki!
dotancohen
Które wersje Windows to obsługują?
ᆼ ᆺ ᆼ
21

Łącze MSDN jest fajne, ale informacje o zabezpieczeniach nie są kompletne. Rejestracja programu obsługi powinna zawierać „% 1”, a nie% 1. Jest to środek bezpieczeństwa, ponieważ niektóre źródła adresów URL nieprawidłowo dekodują% 20 przed wywołaniem niestandardowej procedury obsługi protokołu.

PS. Otrzymasz cały adres URL, a nie tylko jego parametry. Ale adres URL może być źle traktowany, poza wspomnianą już konwersją% 20-> space. Zachowaj ostrożność w projektowaniu składni adresu URL. Nie wrzucaj losowo //, bo wpadniesz w bałagan, jaki jest w pliku: //.

MSalters
źródło
Co dokładnie masz na myśli mówiąc „bałagan, jakim jest file: //”?
Maleev
6
Nie ma formalnego mapowania plików: adresy URL na ścieżki lokalne. Nie ma nawet konsensusu co do użycia dwóch lub trzech wiodących ukośników lub użycia ukośników do przodu i do tyłu, gdy ścieżka odnosi się do katalogu systemu Windows.
MSalters
Wiem, późny komentarz. Ale czy w jakiś sposób można uzyskać dostęp tylko do parametrów adresu URL , bez obsługi protokołu?
Danilo Bargen
2
To brzmi jak osobne pytanie. Ale proszę, zrozumcie swoje warunki. Program obsługi protokołu to program odbierający adres URL. „Bez modułu obsługi protokołu” nie ma nikogo, kto mógłby przeanalizować adres URL i uzyskać dostęp do parametrów adresu URL.
MSalters