我有一个自定义应用程序需要检查我的机器中是否安装了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上正常工作。
答案 0 :(得分:0)
我会检查
的Installed
值
HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID}
密钥
VC++ 2012 (x86)
的GUID为{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
WOW6432Node
将在场或不在场,具体取决于VC++ redist
产品