2008-09-17 12 views
40

Jak zarejestrować niestandardowy protokół w systemie Windows, aby po kliknięciu łącza w wiadomości e-mail lub na stronie internetowej moja aplikacja została otwarta, a parametry z adresu URL zostały do ​​niej przesłane?Jak zarejestrować niestandardowy protokół URL w systemie Windows?

+0

Możliwy duplikat [jak utworzyć własny protokół URL? (np. tak: // ...)] (http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) –

Odpowiedz

23

Myślę, że jest to objęte usługą MSDN, patrz Registering an Application to a URL Protocol.

+0

To będzie działać tylko dla TO ZNACZY. – Oded

+5

Pisałem aplikację opartą na oauth i procedura opisana w MSDN działa doskonale z Mozilla Firefox i Opera (11.6) –

+9

Działa to we wszystkich przeglądarkach w systemie Windows. To rzecz na poziomie osa, a nie na poziomie przeglądarki. –

19

Łącze MSDN jest ładne, 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 URL niepoprawnie dekodują% 20 przed wywołaniem niestandardowej procedury obsługi protokołu.

PS. Otrzymasz cały adres URL, a nie tylko parametry adresu URL. Jednak adres URL może być przedmiotem złego traktowania, poza wymienioną już konwersją przestrzeni% 20->. Pomaga zachować ostrożność w konstrukcji składni adresu URL. Nie wyrzucaj losowo //, bo dostaniesz bałagan w pliku: //.

+0

Co dokładnie oznacza "bałagan, że plik: //" jest? – Maleev

+5

Brak formalnego odwzorowania pliku: adresy URL do ścieżek lokalnych. Nie ma nawet zgody co do używania dwóch lub trzech wiodących ukośników ani używania ukośników naprzód-wstecz, gdy ścieżka odnosi się do katalogu Windows. – MSalters

+0

Późny komentarz, wiem. Ale czy jest również możliwe uzyskanie dostępu do parametrów adresu URL * tylko *, bez obsługi protokołu? –

10
  1. idź do Start następnie w Find typu regedit -> należy otworzyć Registry editor

  2. Kliknij Right Mouse na HKEY_CLASSES_ROOT następnie New ->Key

enter image description here

  1. w kluczu dać małą nazwę, pod jaką chcesz urls nazywać (w moim przypadku będzie to testus://sdfsdfsdf), a następnie kliknij prawym przyciskiem myszy na testus -> następnie New ->String Value i dodaj URL protocol bez wartości.

enter image description here

  1. Następnie dodać więcej wpisów jak zrobiłeś z protokołem (Right MouseNew ->Key) i utworzyć hierarchię jak testus ->shell ->open ->command i wewnątrz zmień na ścieżkę, na której chcesz uruchomić .exe, jeśli chcesz przekazać parametry do swojego exe, a następnie zawiń ścieżkę do exe w "" i dodaj "%1" wyglądać: "c:\testing\test.exe" "%1"

enter image description here

  1. Aby sprawdzić, czy to działa iść do Internet Explorer (nie Chrome lub Firefox) i wprowadź testus:have_you_seen_this_man powinno ogień .exe (podać kilka podpowiedzi, które chcesz to zrobić - powiedz Tak) i przejdź do argumentów testus://have_you_seen_this_man.

Oto próbka app konsoli do testu:

using System; 

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

Nadzieja to zaoszczędzić trochę czasu.

Powiązane problemy