【问题标题】:How to check if I need to install VCRedist?如何检查我是否需要安装 VCRedist?
【发布时间】:2012-09-28 09:04:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: visual-studio dll redistributable msvcr100.dll


    【解决方案1】:

    由于您的 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

    【讨论】:

    • 如果您尝试在没有 Visual Studio 的机器上签入,这不适合
    • 是的,如果没有安装vs但安装了vsredist怎么办? @bcran
    【解决方案2】:

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

    【讨论】:

    • 这不是一个理想的场景(糟糕的用户体验),但它是最具防御性的。