com - DllRegisterServer的使用

标签 com dllregistration

当 Windows 或 OLE 要我在 HKEY_CLASSES_ROOT\CLSID 下注册我的类时,将调用

DllRegisterServer。但我不明白为什么必须实现这个功能,因为当 Windows/OLE 可以调用我的 DLL 时,我的类已经注册了它们的 CLSID 和它们到正确 DLL 的路径。有人可以告诉我,我误解了什么吗?

最佳答案

你把鸡和蛋混为一谈了。为了让 COM 帮助客户端应用程序创建对象和编码调用,它需要知道您的 COM 服务器所在的位置。客户端应用程序只使用一个数字,一个 GUID,告诉 COM 它需要什么对象。从 GUID 到可执行文件中的代码的映射要求 COM 首先知道该文件所在的位置。并且,如有必要,如何在一个接口(interface)上编码从一个公寓到另一个公寓的调用。

它正在注册为 COM 提供该知识的服务器。它在 COM 用来找回文件的注册表中写入键值。与 CLSID 键一样,它的 InProcServer32 子键提供文件的路径。等等。或者如果选择使用无注册 COM,则嵌入在客户端应用程序中的 list 。

使用 SysInternals 的进程监视器观察这一点可以提供很多见解。您将了解 DllRegisterServer() 的作用以及客户端应用程序如何使用这些 key 。

关于com - DllRegisterServer的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757803/

相关文章:

C++ winapi 提升

c# - 将事件处理程序附加到 Com 事件 : InvalidOperationException (S7-PLCSIM)

dll - 如何集中 VB6 dll 引用的 .net dll(com 互操作)

c# - 为 64 位操作系统包装 32 位 dll 以与 regsvr32.exe 一起使用

postgresql - Postgres ODBC 驱动脚本安装

c++ - 媒体基础 SinkWriter (MP4 FastStart)

c# - 从 .NET 附加到 COM 服务器中的事件时出现 E_ACCESSDENIED 异常

python - 在 Solidworks PDM 库上运行 makepy 后缺少类方法

c++ - 使用 Vista x64 在 Visual Studio 2008 中创建 C++ 项目时出现无效类字符串错误