首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册COM时Clsid来自何处

注册COM时Clsid来自何处
EN

Stack Overflow用户
提问于 2016-01-15 10:14:25
回答 1查看 966关注 0票数 1

当我在CMD中运行regsvr32 MyCOMdll.dll注册COM dll时,我看到在注册表中创建了几个条目,其中之一是:

代码语言:javascript
复制
[HKEY_CLASSES_ROOT\MyCOMdll.MyClass\Clsid]
@="{DB402D5A-5584-4F68-A750-45D3E8133121}"

我想了解DB402D5A-5584-4F68-A750-45D3E8133121从何而来,最初我认为GUID是在注册这个DLL时生成的,但是我在不同的环境中检查了它,我发现它具有相同的价值。看起来这些GUID被嵌入到DLL中,但我无法确定或找出在哪一点。

上下文:--我想对这个COM执行一个“热交换”,但是它似乎并不简单。注册新DLL后,我尝试在注册表中更新GUID,但得到了错误ClassFactory cannot supply requested class

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 12:49:51

使用regsvr32注册COM dll时,CLSID将在dll中定义。

在典型的ATL项目中,这些条目是在*.rgs文件和根据该内容更新注册表。中指定的。当然,这并不是唯一的方法,其他工具集和技术也是以不同的方式进行的。

这些CLSID实际上是在项目的.idl文件中定义的(同样,这对于阿特尔项目是有效的),.rgs文件必须正确匹配这些值。.idl文件本身包含库中所有COM类型的IDL定义,由MIDL编译器用于生成类型库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34808767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档