アセンブリ登録ツール (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 への参照が表示されます。
こちらも参照ください
.NET