Cub*_*i73 2 com dllregistration
DllRegisterServer当 Windows 或 OLE 希望我在HKEY_CLASSES_ROOT\CLSID. 但我不明白为什么必须实现这个函数,因为当 Windows/OLE 可以调用我的 DLL 时,我的类已经注册了它们的 CLSID 和正确 DLL 的路径。有人可以告诉我,我误会了什么吗?
你混淆了先有鸡还是先有蛋。为了让 COM 帮助客户端应用程序创建对象和编组调用,它需要知道 COM 服务器所在的位置。客户端应用程序仅使用一个数字(GUID)来告诉 COM 它需要什么对象。从 GUID 到可执行文件中的代码的映射要求 COM 首先知道该文件所在的位置。并且,如有必要,如何将接口上的调用从一间公寓编组到另一间公寓。
它正在注册向 COM 提供该知识的服务器。它在注册表中写入注册表项,COM 使用该注册表项来查找文件。与 CLSID 项一样,其 InProcServer32 子项提供文件的路径。等等。或者如果客户端应用程序选择使用免注册 COM,则嵌入在客户端应用程序中的清单。
使用 SysInternals 的进程监视器观察这一点可以提供很多见解。您将看到 DllRegisterServer() 的作用以及客户端应用程序如何使用这些密钥。
| 归档时间: |
|
| 查看次数: |
9064 次 |
| 最近记录: |