web-dev-qa-db-ja.com

WindowsでカスタムURLプロトコルを登録するにはどうすればよいですか?

電子メールまたはWebページのリンクをクリックしたときにアプリケーションが開かれ、URLからのパラメーターがそれに渡されるように、カスタムプロトコルをWindowsに登録するにはどうすればよいですか?

50
lukeck

これはMSDNでカバーされていると思います。 RLプロトコルへのアプリケーションの登録 を参照してください。

27
Jonas Gulle
  1. Startに移動し、次にFindregeditと入力すると、Registry editorが開きます。

  2. クリック Right Mouse HKEY_CLASSES_ROOT、次にNew-> Key

enter image description here

  1. キーに、URLを呼び出す小文字の名前を指定します(私の場合はtestus://sdfsdfsdfになります)。次に、 Right Mouse testus->、次にNew-> String Value、値なしでURL protocolを追加します。

enter image description here

  1. 次に、プロトコル( Right Mouse New-> Key)およびtestus-> Shell-> open-> commandのような階層を作成し、内部command変更(Default)を、起動する.exeのパスに変更します。exeにパラメーターを渡したい場合は、exeへのパスを""にラップして追加します。 "%1"は次のようになります:"c:\testing\test.exe" "%1"

enter image description here

  1. 動作するかどうかをテストするには、Internet ExplorerChromeまたはFirefoxではない)に移動してtestus:have_you_seen_this_manと入力し、.exeを起動します(いくつかのプロンプトが表示されます)あなたはこれをしたい-はいと言います)そしてargs 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();
        }
    }
}

これにより時間を節約できることを願っています。

25

MSDNリンクはいいですが、そこにあるセキュリティ情報は完全ではありません。ハンドラーの登録には、%1ではなく "%1"が含まれている必要があります。一部のURLソースはカスタムプロトコルハンドラーを呼び出す前に%20を誤ってデコードするため、これはセキュリティ対策です。

PS。 URLパラメータだけでなく、URL全体を取得します。ただし、URLは、既に言及されている%20-> space変換のほかに、何らかの誤用を受ける可能性があります。それはあなたのURL構文設計で保守的であることを助けます。ランダムに//スローしないでください。そうしないと、file://が混乱します。

19
MSalters