【发布时间】:2017-02-27 09:03:50
【问题描述】:
程序集的默认版本存储在哪里?
当我运行 python.exe(2.6 或 2.7)并使用 Process Explorer 检查它时,我看到它加载了最新版本的 msvcr90.dll(我的 PC 上的 9.0.30729.9247)。 Python 有一个内部清单,它指定了 msvcr90.dll 的 9.0.21022.8 版本,但仍会加载较新的版本。 Python 2.6 有一个 Microsoft.VC90.CRT.manifest 文件,该文件也指定 9.0.21022.8,但始终加载较新的版本。
使用进程监视器我可以在加载 msvcr90.dll 时看到所有其他实例,并且它们都使用 9.0.30729.9247。
我的电脑必须在某个地方告诉所有这些程序使用较新版本,但我似乎无法找到在哪里。我的 WinSxS 文件夹中有许多版本的 microsoft.vc90.crt。
如果我无法更改默认版本,有什么方法可以“降级”我的 microsoft.vc90.crt?到看起来更标准的版本(9.0.30729.6161)
附言。我不知道我的 microsoft.vc90.crt 版本 9.0.30729.9247 来自哪里
【问题讨论】:
-
这是由于“Microsoft.VC90.CRT”程序集的发布者配置文件中的
bindingRedirect。在%SystemRoot%\WinSxS\Manifests中查找“*policy.9.0.microsoft.vc90.crt*9.0.30729.9247*.manifest”。 -
您是否因正在加载较新版本的 DLL 而遇到任何特定的错误行为?
-
我只能通过更改注册表值来使其工作,如下面我接受的答案中所述。到目前为止,我还没有遇到任何不良行为(至少没有什么明显的),但我确信在某个阶段会出现问题(需要新版本的程序)。
标签: python windows visual-studio dll winsxs