我的程序包含几个依赖于MSVCP100.dll和MSVCR100.dll的dll,在Win7中我的程序运行没有任何问题,但是在Win8中它找不到这两个dll。我注意到在Win8中默认没有安装VCRedist,所以显然我需要安装VCRedist来启用我的程序。
问题是,如何检查VCRedist是否已安装?
我们可以通过在注册表[1] [2]中进行搜索来实现这一目标。但是,似乎有很多版本的VCRedist(VC2012,2010,2008,2005 ...),所以我需要浏览所有这些注册表项?
答案 0 :(得分:10)
由于您的DLL依赖于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
来检测是否已安装运行时。
对于Visual Studio 2010及以前的版本,http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx对检测运行时是否已安装的方法有很好的解释。
使用Visual Studio 2012,情况发生了变化,VCRedist密钥不再存在。相反,您可以查看reg键的Installed
值(对于32位应用程序)Software\Microsoft\VisualStudio\11.0\VC\Runtimes\x86
答案 1 :(得分:2)
如果只是运行VCRedist的安装程序(无论如何应该附带您的程序),它将为您完成工作。游戏“尝试”以同样的方式安装DirectX。