2008-09-17 96 views
40

如何在Windows上註冊自定義協議,以便在單擊電子郵件或網頁上的鏈接時打開我的應用程序,並將URL中的參數傳遞給它?如何在Windows中註冊自定義URL協議?

+0

可能重複[如何創建自己的URL協議? (例如://...)](http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) – 2017-04-30 08:07:14

回答

23

我認爲這在MSDN中涵蓋,請參閱Registering an Application to a URL Protocol

+0

這將只適用於IE瀏覽器。 – Oded 2011-05-01 19:01:31

+5

我正在編寫基於oauth的應用程序,並且MSDN中描述的過程與Mozilla Firefox和Opera完全兼容(11.6) – 2012-04-26 13:28:17

19

MSDN鏈接很好,但安全信息並不完整。處理程序註冊應該包含「%1」,而不是%1。這是一種安全措施,因爲在調用自定義協議處理程序之前,某些URL源錯誤地解碼了%20。

PS。您將獲得整個網址,而不僅僅是網址參數。但是除了已經提到的%20->空間轉換之外,URL可能會受到一些虐待。它有助於在URL語法設計中保守。不要隨意丟棄//否則你會陷入亂七八糟的文件:// is。

10
  1. 轉到Start然後在Findregedit - >應該打開Registry editor

  2. 點擊鼠標右鍵HKEY_CLASSES_ROOT然後New - >Key

enter image description here

  • 在Key給由你想被稱爲URL中使用小寫的名字(在我的情況下,這將是testus://sdfsdfsdf),然後點擊鼠標右鍵testus - >然後New - >String Value並且沒有價值地添加URL protocol
  • enter image description here

  • 然後,像您協議做添加其它項(右鼠標New - >Key)和類似testus創建層次結構 - >shell - >open - >command和裏面command更改(Default)到您要啓動的.exe的路徑,如果您要傳遞參數到您的exe然後包裝路徑exe文件""並添加"%1"的樣子:"c:\testing\test.exe" "%1"
  • enter image description here

  • 爲了測試它的工作原理去Internet Explorer(不ChromeFirefox),並輸入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(); 
         } 
        } 
    } 
    

    希望這可以節省一些時間。