加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

com – 在不同位置使用激活上下文API和许多dll

发布时间:2020-12-14 05:30:43 所属栏目:Windows 来源:网络整理
导读:我在位置A中运行的.Net客户端中使用激活上下文API,以在WS2008上的位置B(与A完全不同的位置,而不是同一台机器上的兄弟/后代等)上加载无组件的COM组件通过传递ACTCTX中的位置B,它工作正常. 但是,我现在需要对另一个COM dll做同样的事情,而另一个COM dll又依赖
我在位置A中运行的.Net客户端中使用激活上下文API,以在WS2008上的位置B(与A完全不同的位置,而不是同一台机器上的兄弟/后代等)上加载无组件的COM组件通过传递ACTCTX中的位置B,它工作正常.

但是,我现在需要对另一个COM dll做同样的事情,而另一个COM dll又依赖于生活在完全不同位置的几个.Net COM程序集.

我已将依赖的.Net程序集添加到清单中,并将清单和COM dll放在位置B中,但我必须将依赖的.Net程序集放在位置A(客户端运行的位置)才能使其工作.实际上,他们将住在完全不同的目录中,位置A和位置B.

我正在尝试做什么,即是否可以使用激活上下文api在不同的不相关目录中加载多个COM组件?

解决方法

.NET会查看活动和进程激活上下文,以发现与本机COM一样的无reg元数据(< clrClass>等).但是,与本机COM不同,它不使用激活上下文中包含的信息来确定实际文件的位置.在那里,我认为它只关注GAC,其次是客户端EXE旁边的文件位置.您可以使用Sysinternals Procmon确认这一点.我想你可以尝试汉斯建议的解决方法,或者手动将所需的组件预装到你的过程中,看看是否有效;我没有尝试这个,因为在我的场景中客户端exe是一个我无法控制的本机exe.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读