【问题标题】:How I Can Check If App Installed我如何检查应用程序是否已安装
【发布时间】:2015-06-04 04:37:01
【问题描述】:

我有这个代码来检查是否安装了 .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";

我尝试使用相同的代码更改其他应用的位置,但失败了

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();

有什么想法吗?

【问题讨论】:

标签: c#


【解决方案1】:

我会打开 regedit 并导航到该路径。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall...

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

您要查找的密钥也可能类似于 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{0B0BA4A44-B2AB-4B28-9A45-CBE2BFC5FFD1}

如果是这种情况,那么您需要遍历 Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion") 中的每个项目。 OpenSubKey("Uninstall") 然后寻找想要的 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

希望这会有所帮助。

【讨论】:

  • 我确定这个应用程序安装在我的电脑上,我从 regedit.exe 中复制了它的 DisplayName,没有任何变化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多