我正在创建一个程序,首先检查是否已经安装了某个特定程序,如果安装了它继续执行其他代码,如果没有安装,则安装该应用程序然后继续执行其他代码。 / p>
如何在VC ++中以编程方式检查应用程序是否已安装
答案 0 :(得分:2)
我得到了一个类似的C#函数,它在注册表中的32位和64位条目上查找。我假设你得到了正在寻找的程序的正确名称,你需要的只是将它与键“DisplayName”匹配。我怀疑你在制作C ++时会遇到什么问题......它会像这样......
string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
bool found = false;
RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey);
foreach (string skName in rk.GetSubKeyNames())
{
RegistryKey sk = rk.OpenSubKey(skName);
if (sk.GetValue("DisplayName") != null &&
sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
{
//whatever you need to do with it
found = true;
break;
}
}
if(!found)
{
SoftwareKey = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
foreach (string skName in rk.GetSubKeyNames())
{
RegistryKey sk = rk.OpenSubKey(skName);
if (sk.GetValue("DisplayName") != null &&
sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
{
//whatever you need to do with it
found = true;
break;
}
}
}