229

私は見た:

  • http://www...
  • ftp://blah.blah...
  • file://blah.blah...
  • unreal://blah.blah...
  • mailto://blah.blah...

あなたが見るhttpなどの最初のセクションは何と呼ばれますか?

自分で登録できますか?

4

8 に答える 8

225

HTTP://、などの部分はURI スキームFTP://と呼ばれます。

レジストリを介して独自に登録できます。

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) PathToExecutable

ソース: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtmlhttp ://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

于 2008-12-23T15:51:12.193 に答える
57

メモ帳を開き、以下のコードを貼り付けます。「YourApp」をアプリの名前に変更します。YourApp.reg に保存し、エクスプローラーでクリックして実行します。それでおしまい!乾杯!アーウィン・ハンチェス

REGEDIT4

[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""

[HKEY_CLASSES_ROOT\YourApp\shell]

[HKEY_CLASSES_ROOT\YourApp\shell\open]

[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""
于 2011-09-01T22:23:36.067 に答える
40

これはブラウザーごとに異なります。IE と Windows では、プラグ可能なプロトコル ハンドラーと呼ばれるものを作成する必要があります。

基本的な手順は次のとおりです。

  1. IInternetProtocol インターフェイスを実装します。
  2. IInternetProtocolRoot インターフェイスを実装します。
  3. IClassFactory インターフェイスを実装します。
  4. オプション。IInternetProtocolInfo インターフェイスを実装します。HTTP プロトコルのサポートは、トランザクション ハンドラによって提供されます。
  5. IInternetProtocolInfo が実装されている場合は、PARSE_SECURITY_URL と PARSE_SECURITY_DOMAIN のサポートを提供して、URL セキュリティ ゾーン マネージャーがセキュリティを適切に処理できるようにします。プロトコル ハンドラのコードを記述します。
  6. BINDF_NO_UI と BINDF_SILENTOPERATION のサポートを提供します。
  7. HKEY_CLASSES_ROOT\PROTOCOLS\Handler の下のレジストリに、プロトコル ハンドラーのサブキーを追加します。
  8. サブキーの下に文字列値 CLSID を作成し、その文字列をプロトコル ハンドラーの CLSID に設定します。

Windows 側の詳細については、MSDN の About Asynchronous Pluggable Protocols を参照してください。Windows SDK にもサンプルがあります。

簡単なグーグルでもコードプロジェクトに関するこの記事を示しました: http://www.codeproject.com/KB/IP/DataProtocol.aspx

最後に、セキュリティ担当者として、このコードは強化する必要があることを指摘しなければなりません。確実に実行するには、マネージド コードでは実行できず、C++ で実行する必要があるため、リスクが高くなります (VB6 を使用できると思います)。本当にこれを行う必要があるかどうかを検討する必要があります。必要な場合は、慎重に設計し、安全にコーディングしてください。攻撃者は、ページにリンクを含めるだけで、渡されたコンテンツを簡単に制御できます。たとえば、単純なバッファ オーバーフローが発生した場合は、次のようにする方がよいでしょう。<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

strsafe と、VC8 以降のコンパイラに含まれる新しいセキュア CRT メソッドの使用を強く検討してください。私が何について話しているのかわからない場合は、http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspxを参照してください。

于 2008-12-23T16:04:02.370 に答える
19

登録されているURI スキームの一覧は次のとおりです。それぞれに RFC があります。これは、RFC を定義するドキュメントであり、ほぼ標準です。RFC は、新しいアプリケーション (ブラウザー、ftp クライアントなど) の開発者に、何をサポートする必要があるかを伝えます。新しい基本レベルのプロトコルが必要な場合は、未登録のプロトコルを使用できます。他の答えはあなたにその方法を教えてくれます。既存のプロトコルを使用して多くのことを実行できるため、既存の実装を取得できることに注意してください。

于 2008-12-23T15:57:55.377 に答える
4

ほとんどの Microsoft 製品 (Internet Explorer、Office、「ファイルを開く」ダイアログなど) では、適切なプレフィックスを持つ URI が開かれたときに実行されるアプリケーションを登録できます。これは、より一般的な説明の一部です。独自のプロトコルを実装する方法です。

Mozilla の説明はこちら、Javaの説明はこちらです

于 2008-12-23T16:14:35.173 に答える
3

プロトコルといいます。独自のプロトコルを作成することを妨げる唯一のことは、次のことを行う必要があることです。

  1. そのプロトコルを URL 形式と実際のデータ形式の両方で理解する、ある種のブラウザまたはユーザー エージェントを作成します。
  2. そのプロトコルを理解するサーバーを書く
  3. できれば、ブラウザーとサーバーが引き続き連携できるように、プロトコルの仕様を用意してください。

Windows は 1 番を非常に簡単にします。多くの場合、これだけで十分です。ビズ:

URL プロトコルへのアプリケーションの登録

于 2008-12-23T15:50:36.640 に答える
1

最初のセクションはプロトコルと呼ばれ、はい、独自に登録できます。Windows では (C# タグを指定してこれを行っていると想定しています。Mono ファンには申し訳ありません)、レジストリを介して行われます。

于 2008-12-23T15:50:58.090 に答える
-11

そのような登録を実際に行う必要はありません。私は emule のような多くのプログラムが独自のプロトコル固有のものを作成するのを見てきました (それは私がそれを呼んでいるものだと思います)。その後、基本的には、どのプログラムがそのプロトコルを処理するかについて、レジストリにいくつかの値を設定する必要があります。プロトコル指定子の公式レジストリがあるかどうかはわかりません。人々に自分のアプリをブラウザから開いてもらいたいのであれば、自分のアプリケーション用に独自のプロトコル指定子を作成することを止める理由はほとんどありません。

于 2008-12-23T15:49:08.483 に答える