我如何检查是否安装了应用程序

时间:2015-06-04 04:37:01

标签: c#

我有这个代码来检查.net是否已安装,并且它的工作非常好

string key;
bool data = false;

try
{
    key = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").GetValue("50727").ToString();
}
catch (Exception)
{
}
data = (key == "50727-50727");
label1.text = "installed";

我试图使用相同的代码来更改anothor应用程序的位置,但它会失败

32位系统

string key1;
bool data1 = false;         

try
{
    key1 = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Wow6432Node").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").OpenSubKey("Mozilla Firefox 38.0.1 (x86 en-GB)").GetValue("DisplayName").ToString();
}
catch (Exception)
{
}

data1 = (key1 == "Mozilla Firefox 38.0.1 (x86 en-GB)");
label10.Text = "Mozilla Firefox - " + data1.ToString();

64位系统

string key1;
bool data1 = false;


try
{
    key1 = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").OpenSubKey("Mozilla Firefox 38.0.1 (x86 en-GB)").GetValue("DisplayName").ToString();
}
catch (Exception)
{
}

data1 = (key1 == "Mozilla Firefox 38.0.1 (x86 en-GB)");
label10.Text = "Mozilla Firefox - " + data1.ToString();

任何想法?

1 个答案:

答案 0 :(得分:1)

我会打开注册表并导航到那条路。

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载......

首先,确保名称在那里。如果不是那就是问题。

也可能是您要查找的密钥看起来像HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall {0B0BA4A44-B2AB-4B28-9A45-CBE2BFC5FFD1}

如果是这种情况,则需要遍历Registry.LocalMachine.OpenSubKey(“SOFTWARE”)中的每个项目.OpenSubKey(“Microsoft”)。OpenSubKey(“Windows”)。OpenSubKey(“CurrentVersion”)。 OpenSubKey(“卸载”),然后查找想要的DisplayName。 (见Iterate through registry entries

就像一个注释,因为你会寻找“Mozilla Firefox 38.0.1(x86 en-GB)”,如果在另一台PC上有任何不准确的话,它就找不到它。例如,如果版本是38.0.2,或者浏览器是美国的EN版本。我会看看Mark Shevchenko对最佳一般检查的评论。使用卸载路径可能不那么可靠。

顺便提一下,这里有一个类似的问题:Check if application is installed in registry

希望这有帮助。