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

前端之家收集整理的这篇文章主要介绍了com – 在不同位置使用激活上下文API和许多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.

猜你在找的Windows相关文章