COM へのアセンブリの登録

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

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

GUID 説明 レジストリ キー

CLSID

クラス ID

HKEY_CLASSES_ROOT\CLSID\{000...000}

IID

インターフェイス ID

HKEY_CLASSES_ROOT\Interface\{000...000}

LIBID

ライブラリ ID

HKEY_CLASSES_ROOT\TypeLib\{000...000}

ProgID

プログラム ID

HKEY_CLASSES_ROOT\000...000

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

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

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

  • Regasm.exe に対して /codebase オプションで指定したファイル パス。

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

レジストリ エントリのチェック

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

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

レジストリ エントリ

参照

処理手順

方法 : COM から .NET 型を参照する

概念

COM への .NET Framework コンポーネントの公開
.NET オブジェクトの呼び出し
COM アクセスに対するアプリケーションの配置