[英]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.