7

我的程序包含几个依赖于 MSVCP100.dll 和 MSVCR100.dll 的 dll,在 Win7 中我的程序运行没有任何问题,但是在 Win8 中它无法找到这两个 dll。我注意到在 Win8 中默认没有安装 VCRedist,所以显然我需要安装 VCRedist 来启用我的程序。

问题是,如何检查是否安装了 VCRedist?

看起来我们可以通过在注册表[1] [2]中搜索来做到这一点。但是,似乎有很多版本的 VCRedist(VC2012,2010,2008,2005...),所以我需要遍历所有这些注册表项吗?

4

2 回答 2

12

由于您的 DLL 依赖于 MSVCR100.dll,因此您需要找到适用于 VC 2010 的 VCRedist。

“MSVCR”或“MSVCP”后面的数字是 Visual Studio x10 的内部版本 - http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Version_history列出了各种版本的值。

HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86对于 Visual Studio 2010,您可以通过检查32 位应用程序/DLL 和HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x6464 位应用程序/DLL的“已安装”值来检测运行时是否已安装。

对于 Visual Studio 2010 和以前的版本,http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx很好地解释了检测是否安装了运行时的方法。

在 Visual Studio 2012 中,情况发生了变化,VCRedist 键不再存在。相反,您可以查看Installedreg 键的值(对于 32 位应用程序)Software\Microsoft\VisualStudio\11.0\VC\Runtimes\x86

于 2013-01-29T00:46:15.917 回答
2

如果您只是运行 VCRedist 的安装程序(无论如何,您应该随程序一起提供),它会为您完成这项工作。游戏“尝试”以同样的方式安装 DirectX。

于 2012-09-28T10:14:29.590 回答