什么注册一个DLL呢?
我知道如何注册dll,但我从来不确定为什么要这样做,或者在什么情况下必须注册dll。 有人可以解释或指向我的一些文件?
当DLL被注册时,DLL中的DllRegisterServer
方法入口点被调用。 类似地,DLL注销时调用DllUnregisterServer
。
如此MSDN文章中所述 :
指示进程内服务器为此服务器模块中支持的所有类创build其registry项。 如果此函数失败,则其所有类的registry状态都是不确定的。
对于COM DLL,您需要实现您自己的DllRegisterServer
和DllUnregisterServer
入口点方法,这些方法会根据需要进行注册/取消注册。 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的源代码