首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在插件体系结构中执行无注册的COM

如何在插件体系结构中执行无注册的COM
EN

Stack Overflow用户
提问于 2009-11-20 13:36:30
回答 2查看 1.2K关注 0票数 9

我们使用清单文件来进行免费注册的COM,正如我在另一个问题中所阐述的那样。

现在我们尝试在支持插件的应用程序中使用免注册COM。插件是OCX文件,可以在主应用程序安装后添加到主应用程序的文件夹中。

但是,这意味着主应用程序的清单文件需要由插件安装程序修补。这似乎是一件危险且容易出错的事情,尤其是如果可以安装多个插件的话。

是否有办法以某种方式拆分主应用程序的清单文件,以便每个插件都可以安全地将自己的部分作为一个单独的文件添加?还是另一种安全的方法来修补清单文件?

如果是相关的话:我们使用维克斯创建安装程序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-01 09:57:50

我不建议修改应用程序的清单文件;这看起来相当脆弱,只有当它驻留在可写的位置时才能工作。

在进程启动时,应用程序的清单用于生成一个“激活上下文”,该上下文作为全流程激活上下文推送。但是每个线程也有一个激活上下文堆栈,可以直接操作。在寻找COM注册数据时,给定线程上的操作同时查看堆栈上的最顶层上下文和进程范围内的激活上下文。

建议是,任何时候插件代码都需要调用COM,应该在线程上激活特定于插件的清单。这可以通过以下两种方式中的一种很容易做到:

  1. 将特定于插件的清单作为ID2清单嵌入到插件中,并使用定义的宏使能进行编译。这基本上封装了需要从清单中自动激活和停用调用周围的适当激活上下文的普通Windows。
  2. 激活/关闭插件的所有入口点周围线程上的正确激活上下文。这是通过激活上下文API完成的。这很容易通过激活上下文管理对象来完成。
票数 6
EN

Stack Overflow用户

发布于 2012-09-27 12:52:22

如果您使用的是.Net,您可以使用这个答案中所示的代码来处理激活上下文。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1770463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档