WinSxS如何将DLL名称解析为DLL位置?

use*_*323 6 winsxs

如果我将模块链接到使用WinSxS部署的mydll.dll,我模块中的PE头将只引用"mydll.dll".Windows如何在运行时确定,首先应该通过WinSxS加载此依赖项,其次是它所组装的程序集?

use*_*323 7

它通过"激活上下文"来实现.在我看来,在您了解激活上下文及其管理方式之前,WinSxS没有任何意义.

我在http://omnicognate.wordpress.com/2009/10/05/winsxs/上写了一篇相当长的博客文章解释细节.

总结本文,激活上下文是WinSxS在运行时使用的结构,用于将未版本控制的对象名称(例如DLL名称)解析为有关如何定位它们的完整信息.WinSxS中"清单"的目的是构建激活上下文.如果不了解这些激活上下文的构造方式和时间以及它们如何被管理(它们保存在线程局部堆栈中),就不可能推断通过WinSxS加载DLL所涉及的步骤,因此无法诊断可能出现的大多数问题.