什么注册一个DLL呢?

我知道如何注册dll,但我从来不确定为什么要这样做,或者在什么情况下必须注册dll。 有人可以解释或指向我的一些文件?

当DLL被注册时,DLL中的DllRegisterServer方法入口点被调用。 类似地,DLL注销时调用DllUnregisterServer

如此MSDN文章中所述 :

指示进程内服务器为此服务器模块中支持的所有类创build其registry项。 如果此函数失败,则其所有类的registry状态都是不确定的。

对于COM DLL,您需要实现您自己的DllRegisterServerDllUnregisterServer入口点方法,这些方法会根据需要进行注册/取消注册。 DllRegisterServer代码示例可以在这里find。

注册DLL的最终结果是,DLL中组件的所有CLSID都在HKEY_CLASSES_ROOT\CLSID下注册。 这允许CoCreateInstance从另一个DLL或应用程序实例化COM对象时find正确的服务器。

DllUnregisterServer会做相反的事情,并从registry中删除所有由DllRegisterServer放在那里的CLSID。

有关DllRegisterServer更多一般信息可以在这里find。

什么是最常被称为DLL注册是当它实现一个COM对象。 regsvr32确保可以创build对象的一个​​实例。 当例如VBScript使用New或CreateObject()时,注册可确保COM知道要加载哪个DLL以创build新实例,无论是通过名称还是通过CLSID。

(非常)简要的总结见“外行的解释” 。

只需查看regsvr32.exe的源代码