如何检查是否需要安装VCRedist?

7
我的程序中包含多个dll,其中依赖于MSVCP100.dll和MSVCR100.dll,在Win7中我的程序运行良好,但是在Win8中,它无法找到这两个dll。 我注意到Win8默认没有安装VCRedist,因此显然需要安装VCRedist才能启用我的程序。
问题是,如何检查是否安装了VCRedist?
看起来我们可以通过在注册表中搜索来实现 [1] [2]。 然而,似乎有许多版本的VCRedist(VC2012、2010、2008、2005……),所以我需要遍历所有这些注册表键吗?
2个回答

12

由于您的动态链接库依赖于MSVCR100.dll,因此您需要查找VC 2010的VCRedist。

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

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

对于Visual Studio 2010及之前的版本,http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx中有关于检测运行时是否安装的方法的详细说明。

随着Visual Studio 2012的推出,情况发生了变化,VCRedist密钥不再存在。相反,您可以查看32位应用程序的reg键Software\Microsoft\VisualStudio\11.0\VC\Runtimes\x86Installed值。


2
如果您尝试在没有Visual Studio的机器上进行检查,则此方法不适用。 - XtianGIS
1
是的,如果未安装VS但已安装VSRedist呢?@bcran - Dragon

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

这并不是一个理想的情况(用户体验较差),但这是最为保守的做法。 - Shaun Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接