未正确检测到Visual C ++ Redistributable 2012检查

时间:2014-09-17 16:18:04

标签: c# .net registry regedit

我有一个自定义应用程序需要检查我的机器中是否安装了Visual C++ 2012 Redistributable

我用Google搜索,我发现Windows注册表中的物理路径(您可以使用Regedit进行搜索)如下:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86

您可以在this Stack answer中看到这些链接。

但由于某些原因,我的应用程序有时找不到它。在这种情况下,我使用两个不同的管理员帐户来安装它们,但我认为没有区别。

我还找到了these个其他位置。但我没有使用它们。 这是我的代码:

....
 bool vc2012Installed = CheckVisualRedistributable(vc2012RedistRoutes);
....

private bool CheckVisualRedistributable(string[] redistCheck)
{
    try
    {
        int installed = -1;
        foreach (string route in redistCheck)
        {
            RegistryKey vcRedistKey = Registry.LocalMachine.OpenSubKey(route);
            if (vcRedistKey == null) { continue; }

            installed = (int)vcRedistKey.GetValue("Installed");
            if (installed == 1) break;
        }
        if (installed == -1) return false;

        return true;
    }
    catch (Exception ex)
    {
        MessageBox.Show("CheckVisualRedistributable: " + ex.Message);
        return false;
    }
}

但我不知道为什么在某些情况下C++ Redistributable 2012没有被发现......

有什么可能出错的想法吗?可能是用户帐户问题?

注意:Windows 8.1上出现问题。在Windows 7上正常工作。

1 个答案:

答案 0 :(得分:0)

我会检查

Installed

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID}密钥

  • 其中VC++ 2012 (x86)的GUID为{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
  • WOW6432Node将在场或不在场,具体取决于VC++ redist产品