電子メールまたはWebページのリンクをクリックするとアプリケーションが開かれ、URLのパラメーターが渡されるように、カスタムプロトコルをWindowsに登録するにはどうすればよいですか?
回答:
行くStartには、その後Findタイプregedit- >それは開く必要がありますRegistry editor
クリックRight MouseでHKEY_CLASSES_ROOT、その後New- >Key
testus://sdfsdfsdf)、[OK]をクリックします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(notChromeまたは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でカバーされていると思います。URLプロトコルへのアプリケーションの登録を参照してください。
MSDNリンクはすばらしいですが、そこにあるセキュリティ情報は完全ではありません。ハンドラー登録には、%1ではなく「%1」を含める必要があります。一部のURLソースは、カスタムプロトコルハンドラーを呼び出す前に%20を誤ってデコードするため、これはセキュリティ対策です。
PS。URLパラメータだけでなく、URL全体を取得します。ただし、前述の%20->スペース変換に加えて、URLは何らかの虐待を受ける可能性があります。URL構文の設計を保守的にするのに役立ちます。//ランダムにスローしないでください。そうしないと、file://が混乱することになります。