電子メールまたはWebページのリンクをクリックしたときにアプリケーションが開かれ、URLからのパラメーターがそれに渡されるように、カスタムプロトコルをWindowsに登録するにはどうすればよいですか?
これはMSDNでカバーされていると思います。 RLプロトコルへのアプリケーションの登録 を参照してください。
Start
に移動し、次にFind
でregedit
と入力すると、Registry editor
が開きます。
クリック Right Mouse HKEY_CLASSES_ROOT
、次にNew
-> Key
testus://sdfsdfsdf
になります)。次に、 Right Mouse testus
->、次にNew
-> String Value
、値なしでURL protocol
を追加します。New
-> Key
)およびtestus
-> Shell
-> open
-> command
のような階層を作成し、内部command
変更(Default)
を、起動する.exe
のパスに変更します。exeにパラメーターを渡したい場合は、exeへのパスを""
にラップして追加します。 "%1"
は次のようになります:"c:\testing\test.exe" "%1"
Internet Explorer
(Chrome
または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();
}
}
}
これにより時間を節約できることを願っています。
MSDNリンクはいいですが、そこにあるセキュリティ情報は完全ではありません。ハンドラーの登録には、%1ではなく "%1"が含まれている必要があります。一部のURLソースはカスタムプロトコルハンドラーを呼び出す前に%20を誤ってデコードするため、これはセキュリティ対策です。
PS。 URLパラメータだけでなく、URL全体を取得します。ただし、URLは、既に言及されている%20-> space変換のほかに、何らかの誤用を受ける可能性があります。それはあなたのURL構文設計で保守的であることを助けます。ランダムに//スローしないでください。そうしないと、file://が混乱します。