我的程序包含几个依赖于MSVCP100.dll和MSVCR100.dll的dll,在Win7中我的程序运行没有任何问题,但是在Win8中它找不到这两个dll.我注意到在Win8中默认没有安装VCRedist,所以显然我需要安装VCRedist来启用我的程序.
问题是,如何检查是否安装了VCRedist?
看起来我们可以通过在注册表[1] [2]中搜索来做到这一点.但是,似乎有很多版本的VCRedist(VC2012,2010,2008,2005 ......),所以我需要浏览所有这些注册表项?
由于您的DLL依赖于MSVCR100.dll,因此您需要为VC 2010找到VCRedist.
"MSVCR"或"MSVCP"之后的数字是Visual Studio x10的内部版本 - http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Version_history列出了各种版本的值.
对于Visual Studio 2010,您可以通过检查HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86
32位应用程序/ DLL和HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64
64位应用程序/ DLL 的"已安装"值来检测是否已安装运行时.
对于Visual Studio 2010和以前的版本,http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx对检测运行时是否已安装的方法有很好的解释.
使用Visual Studio 2012,事情发生了变化,VCRedist键不再存在.相反,您可以查看Installed
reg键的值(对于32位应用程序)Software\Microsoft\VisualStudio\11.0\VC\Runtimes\x86