共用方式為


與版本相關的登錄機碼

大部分 COM 所使用的 Managed 組件都必須在 Windows 登錄中註冊。 使用免註冊的 COM Interop 組件可以免除這項需求。

您可以使用組件註冊工具 (Regasm.exe)RegistrationServices 類別所公開的方法註冊組件。 每一個機制都會建立與版本相關的登錄機碼,以允許多版本的相同組件在電腦上並存執行。

這個主題描述 Regasm.exe 如何加入和移除 COM 可用的登錄項目。 如果您正在撰寫自訂安裝程式,這個主題可以幫助您了解 COM Interop 並存執行的註冊需求。

與版本相關機碼的登錄配置

當您初始註冊組件時,Regasm.exe 會為組件的每個類別建立一組最上層機碼,並在 HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 機碼下新增子機碼 (Subkey),以唯一辨識組件版本。 下列登錄配置顯示 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 應用程式的執行階段初始設定

設定並存執行的 COM 應用程式

套用與版本相關的屬性

COM 元件和並存執行

其他資源

COM Interop 的並存執行