次の方法で共有


バージョン依存レジストリ キー

更新 : 2007 年 11 月

マネージ アセンブリの多くは、COM で使用するために Windows のレジストリに登録する必要があります。登録を必要としない COM 相互運用機能を使用するアセンブリには、この要件は該当しません。

アセンブリを登録するには、アセンブリ登録ツール (Regasm.exe) または RegistrationServices クラスによって公開されるメソッドを使用します。どちらの機構でも、コンピュータ上で同一アセンブリの複数のバージョンを side-by-side 実行できるようにするバージョン依存レジストリ キーが作成されます。

このトピックでは、Regasm.exe がどのように COM 対応レジストリ エントリを追加および削除するかについて説明します。このトピックは、カスタム インストール プログラムを作成する場合に、COM 相互運用機能用に side-by-side 実行を行うための登録の要件を理解する上で役立ちます。

バージョン依存キーのレジストリのレイアウト

アセンブリを最初に登録するときに、Regasm.exe によって、一連の最上位レベルのキーがアセンブリ内のクラスごとに作成され、HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 キーの下にサブキーが追加されます。これにより、アセンブリのバージョンを一意に特定できます。className バージョン 1.0.0.0 のサブキーのレジストリのレイアウトを次に示します。

CLSID\{}
@="namespaceName.className"
CLSID\{}\InprocServer32
@="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
CLSID\{}\ProgId
@="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

アセンブリの新しいバージョンを登録すると、Regasm.exe により、新しいバージョンのバージョン依存サブキーが追加されます。上のレジストリ レイアウトに示されているように、同じアセンブリのすべてのバージョンは、最上位レベルのキーを共有します。同じアセンブリのサブキー 1.0.0.0 と 2.0.0.0 のレイアウトの部分を次に示します。

1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5000"

バージョン依存キーの削除

アセンブリのバージョンをアンインストールすると、Regasm.exe によって、そのバージョン依存サブキーだけが削除されます。たとえば、className バージョン 1.0.0.0 をアンインストールすると、Regasm.exe は 1.0.0.0 サブキーを削除しますが、最上位レベルのキーと 2.0.0.0 サブキーはすべて残ります。

CLSID\{}
   @="namespaceName.className"
CLSID\{}\InprocServer32
   @="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
Version
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5500"
CLSID\{}\ProgId
   @="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

アセンブリの最後のバージョンをアンインストールすると、Regasm.exe は、すべてのバージョン依存サブキーを削除します。また、アセンブリに関連付けられている最上位レベルのキーもレジストリから削除されます。

参照

概念

COM アプリケーションからのランタイム初期化

side-by-side 実行のための COM アプリケーションの構成

バージョン依存属性の適用

COM コンポーネントと side-by-side 実行

その他の技術情報

COM 相互運用機能の side-by-side 実行