【发布时间】:2013-08-28 22:29:51
【问题描述】:
我正在编写一个小型 DLL 组件,它需要访问两个第三方组件来组合数据,其中一个是 32 位的,另一个是 64 位的。两者都在 TypeLib 中注册并且与自动化兼容,因此编组应该不是问题。
如果我正确理解了文档,那么除非组件还具有 AppID 和 DllSurrogate 键,否则无法强制加载代理;由于两者都是第三方组件,我有点不愿意修改它们的注册。
有没有办法在理想情况下没有任何额外依赖项的 DLL 组件的代理进程中激活没有 AppID 的组件中的对象,或者谁能向我解释为什么这是一个坏主意?
【问题讨论】:
-
自定义代理不是也需要服务器组件有一个 AppID,所以 COM 知道在哪个代理中实例化类吗?如果我添加它,这将影响所有客户端,而不仅仅是我宁愿避免的组件(此外,标准代理应该可以正常工作)。
-
Raymond Chen 建议资源管理器以某种方式
CoCreateInstance未使用 DllSurrogate 键注册的对象,以便在代理中创建它们 - 我会有兴趣怎么做。 -
@SimonRichter,我怀疑 Explorer 只是使用了一个辅助对象,它控制着它的注册,在进程外创建它,并让它创建插件。