次の方法で共有


COM へのアセンブリの登録

アセンブリ登録ツール (Regasm.exe) と呼ばれるコマンド ライン ツールを実行して、COM で使用するアセンブリを登録または登録解除できます。 Regasm.exe は、COM クライアントが .NET Framework クラスを透過的に使用できるように、クラスに関する情報をシステム レジストリに追加します。 RegistrationServices クラスは同等の機能を提供します。

マネージド コンポーネントは、COM クライアントからアクティブ化する前に、Windows レジストリに登録する必要があります。 次の表は、Regasm.exe 通常 Windows レジストリに追加されるキーを示しています。 (000000 は実際の GUID 値を示します)。

GUID(グローバルユニーク識別子) 説明 レジストリ キー
CLSID クラス識別子 HKEY_CLASSES_ROOT\CLSID\{000…000}
IID インターフェイス識別子 HKEY_CLASSES_ROOT\Interface\{000…000}
リビド ライブラリ識別子 HKEY_CLASSES_ROOT\TypeLib\{000…000}
ProgID プログラム識別子 HKEY_CLASSES_ROOT\000…000

Under the HKCR\CLSID\{0000…0000} キー。既定値はクラスの ProgID に設定され、Class と Assembly という 2 つの新しい名前付き値が追加されます。 ランタイムはレジストリから Assembly 値を読み取り、ランタイム アセンブリ リゾルバーに渡します。 アセンブリ リゾルバーは、名前やバージョン番号などのアセンブリ情報に基づいて、アセンブリの検索を試みます。 アセンブリ リゾルバーがアセンブリを見つけるには、アセンブリが次のいずれかの場所にある必要があります。

  • グローバル アセンブリ キャッシュ (厳密な名前付きアセンブリである必要があります)。

  • アプリケーション ディレクトリ内。 アプリケーション パスから読み込まれたアセンブリには、そのアプリケーションからのみアクセスできます。

  • Regasm.exeする /codebase オプションで指定されたファイル パスに沿って。

Regasm.exe では、HKCR\CLSID\{0000.. の下に InProcServer32 キーも作成されます。0000} キー。 キーの既定値は、共通言語ランタイム (Mscoree.dll) を初期化する DLL の名前に設定されます。

レジストリ エントリの確認

COM 相互運用機能は、任意の .NET Framework クラスのインスタンスを作成するための標準クラス ファクトリ実装を提供します。 クライアントは、他の COM コンポーネントと同様に、マネージド DLL で DllGetClassObject を呼び出してクラス ファクトリを取得し、オブジェクトを作成できます。

InprocServer32 サブキーの場合、共通言語ランタイムがマネージド オブジェクトを作成することを示すために、従来の COM タイプ ライブラリの代わりに Mscoree.dll への参照が表示されます。

こちらも参照ください