VB6编译器生成的DllRegisterServer有什么作用?

时间:2017-11-09 21:02:15

标签: com vb6

编译VB6 DLL时,编译器会将一个导出的DllRegisterServer()函数添加到DLL中。

这个功能究竟做了什么?

我明白它的目的似乎是在注册表中添加条目,允许所有COM魔法工作......调用它

  

Instructs an in-process server to create its registry entries for all classes supported in this server module.

但我对它的具体详细规范感兴趣。我还没有找到任何MSDN文档。这样的事情存在吗?有人拆解了这些代码并记录了他们的发现吗?

编辑:我对此感兴趣的一个原因是,我认为有些情况下它无法完全/成功运行(即使regsvr32报告成功),我想更好地了解这些潜在的故障模式。< / p>

1 个答案:

答案 0 :(得分:0)

该函数用于向Windows注册表注册DLL。例如,如果使用DLL名称调用regsvr32.exe,则将加载DLL,然后regsvr32.exe实用程序将调用DllRegisterServer()函数。从COM角度来看,该功能应该是在Windows注册表中创建PROGID,CLSID和TypeLib条目,以便COM客户端可以通过CoCreateInstance()创建和使用COM对象。