簡體   English   中英

注冊托管COM組件時是否需要“已實現的類別”鍵?

[英]Is the 'Implemented Categories' key needed when registering a Managed COM Component?

手動注冊COM Interop的托管類時,需要某些注冊表項。 例如

HKEY_CLASSES_ROOT
  CLSID\[My Cls Id]
    InprocServer32
     (Default) = "mscoree.dll"
     Assembly = [My assembly name]
     etc.

我注意到當VS為COM Interop注冊一個庫時,它還會添加一個鍵

HKEY_CLASSES_ROOT
  CLSID\[My Cls Id]
    Implemented Categories
      {62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}

這個關鍵是什么,是否絕對必要? 據我所知,如果沒有它,生活就會好起來,但也許我沒有遇到需要它的情況。

它是一個CATID,一個組件類別。 控制主機可以使用它來過濾工具箱中顯示的項目,只提供實現預期接口集的項目。

您可以在HKCR\\Component Categories注冊表項中查看已知組件類別的列表。 Regasm.exe使用的那個意味着“此COM服務器在.NET中實現”。 由於.NET程序不應使用以托管語言實現的COM服務器,因此它應該有用,因為它應該直接使用程序集中的元數據。

CATID沒有很好的文件記錄。 這使得它們相當無用,如果你只是省略它們,你很少會遇到麻煩。 如果某些控制主機供應商要求您使用CATID使您的COM服務器在其主機中可用,他們會明確地通知您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM