Dll 注册COM时Clsid的来源

Dll 注册COM时Clsid的来源,dll,com,guid,regsvr32,Dll,Com,Guid,Regsvr32,当我在CMD中运行regsvr32 MyCOMdll.dll注册COM dll时,我看到在注册表中创建了几个条目,其中一个是: [HKEY_CLASSES_ROOT\MyCOMdll.MyClass\Clsid] @="{DB402D5A-5584-4F68-A750-45D3E8133121}" 我想了解一下DB402D5A-5584-4F68-A750-45D3E8133121的来源,最初我认为在注册此DLL时生成的GUID,但是我在不同的环境中检查了它,发现它具有相同的值。看起来这些gu

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

[HKEY_CLASSES_ROOT\MyCOMdll.MyClass\Clsid]
@="{DB402D5A-5584-4F68-A750-45D3E8133121}"
我想了解一下
DB402D5A-5584-4F68-A750-45D3E8133121
的来源,最初我认为在注册此DLL时生成的GUID,但是我在不同的环境中检查了它,发现它具有相同的值。看起来这些guid被嵌入到了DLL中,但我无法确认或确定是在哪一点上


上下文:我想对该COM执行“热插拔”,但这似乎并不简单。我试图在注册新的DLL后更新注册表中的GUID,但出现错误
ClassFactory无法提供请求的类

使用
regsvr32
注册COM dll时,CLSID在dll内定义

在典型的ATL COM项目中,这些条目在*.rgs文件和中指定。当然,这不是唯一的方法,其他工具集和技术以不同的方式实现


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

编写这些键的是您的代码。但是,您实现了DllRegisterServer()函数。容易被有用的类库所掩盖。如果是ATL,那么它来自类向导生成的自动生成的.rgs文件。任何事情都是可能的,不告诉我们你用了什么,就不可能准确回答。