【发布时间】:2009-09-23 21:21:52
【问题描述】:
我在 C++ VS2005 项目中设置独立 COM 项目设置,以使用免注册激活方法加载 ocx 组件。如果 ocx 组件也用于我的应用程序加载的 DLL 库中,我是否还需要在该 DLL 项目的设置中设置隔离 COM 设置?还是只设置主应用程序的嵌入式清单就足够了?谢谢!
【问题讨论】:
标签: com ocx side-by-side
我在 C++ VS2005 项目中设置独立 COM 项目设置,以使用免注册激活方法加载 ocx 组件。如果 ocx 组件也用于我的应用程序加载的 DLL 库中,我是否还需要在该 DLL 项目的设置中设置隔离 COM 设置?还是只设置主应用程序的嵌入式清单就足够了?谢谢!
【问题讨论】:
标签: com ocx side-by-side
据我了解,隔离是针对每个进程的,而不是针对每个模块的。因此,应用程序清单中的任何内容都适用于从该应用程序启动的任何进程。
想想CoCreateInstance 需要做些什么来支持无注册 COM ——它需要以某种方式找到一个清单文件,如果它存在,不去注册表获取激活信息。
由于CoCreateInstance 没有参数告诉它清单的路径,它需要从上下文中派生它。
.DLL 没有真正的上下文,但对于 .EXE,当前进程句柄可用于派生可执行文件的路径等,所以我怀疑他们就是这样做的。
【讨论】: