首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows7和Windows Server2008 R2中的不同WinSxS行为

Windows7和Windows Server2008 R2中的不同WinSxS行为
EN

Stack Overflow用户
提问于 2011-05-21 00:31:23
回答 2查看 1.1K关注 0票数 3

我有一个可执行文件,清单上说它取决于

代码语言:javascript
复制
Microsoft.VC90.CRT 9.0.21022.8
Microsoft.VC90.CRT 9.0.30729.1

在Windows 7上,此可执行文件运行时没有任何问题。在Windows Server2008 R2上,此可执行文件无法运行,并显示以下消息:

应用程序无法启动,因为其并行配置不正确。有关详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具。

这是意想不到的--我认为Windows7和Windows Server2008 R2在运行时可用性方面应该非常相似。两台机器都很干净。Windows7机器是全新安装的,上面什么都没有。Windows Server2008 R2计算机只有一些来自Windows Update的更新。

我检查了Windows7机器的WinSxS目录,发现

代码语言:javascript
复制
Microsoft VC90.CRT 9.0.30729.4926

我检查了Windows Server2008 R2机器的WinSxS目录,发现

代码语言:javascript
复制
Microsoft VC90.CRT 9.0.30729.4926

存在的运行时比清单中指定的运行时新,但Windows Server2008 R2系统无法重定向到较新的运行时。在Windows Server2008 R2上运行sxstrace显示:

代码语言:javascript
复制
INFO: Applying Binding Policy
    INFO: No publisher policy found.
    INFO: No binding policy redirect found.

在Windows 7上运行sxstrace可以提供:

代码语言:javascript
复制
INFO: Applying Binding Policy
    INFO: Find publisher policy at C:\Windows\WinSxS\manifest\amd64...
    INFO: Publisher Policy redirected assembly version.
    INFO: Post policy assembly identity is...

除了安装VS2008运行时和VS2008 SP1运行时之外,你有什么想法可以解决这个问题吗?我认为程序集的整个想法是,它允许系统覆盖较旧的运行时并替换较新的运行时。

EN

回答 2

Stack Overflow用户

发布于 2011-05-23 03:51:48

尽管原则上WinSxS允许兼容的较新版本的程序集替换旧版本,但VS运行时不使用此功能,并且仅绑定到编译时所针对的相同版本。根据相同版本的库重新编译应用程序的所有组件(可能是最好的,以避免多个malloc堆出现问题),或者同时安装两个运行时。

票数 0
EN

Stack Overflow用户

发布于 2014-04-22 05:44:37

您可以将VC++运行时dlls放在应用程序的可执行文件目录中,它应该可以工作。您将需要两个dll (MSVCR和MSVCP)和清单。不经意间,只要把这3个文件都放到应用程序的可执行目录中就可以了

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

https://stackoverflow.com/questions/6074963

复制
相关文章

相似问题

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