循环FireFox的卸载密钥时为Null值
本文关键字:Null 密钥 FireFox 卸载 循环 | 更新日期: 2023-09-27 18:28:03
我有以下代码:这些值在调试器中显示如下:FF86_版本"31.0.1"FF86_name"Firefox"displayFF86version"null"显示FF86name"null"
public static bool checkFF86version(string FF86_name, string FF86_version)
{
RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
.OpenSubKey(@"SOFTWARE'Wow6432Node'Microsoft'Windows'CurrentVersion'Uninstall");
//.OpenSubKey(@"SOFTWARE'Microsoft'Windows'CurrentVersion'Uninstall");
string displayFF86version;
string displayFF86name;
if (key != null)
{
foreach (RegistryKey subkey in key.GetSubKeyNames().Select(keyName => key.OpenSubKey(keyName)))
{
displayFF86name = subkey.GetValue("DisplayName") as string;
if (displayFF86name != null && displayFF86name.Contains(FF86_name))
{
displayFF86version = subkey.GetValue("DisplayVersion") as string;
if (displayFF86version.Equals(FF86_version))
{
var version = displayFF86version; //Comes from the Registry
var parsedversion = Version.Parse(version);
var minimumversion = new Version(FF86_version); //Static Version Check
if (parsedversion >= minimumversion)
return true;
}
}
return false;
}
}
return false;
}
我想看看是否安装了"火狐"。如果检测到它,则比较DisplayVersion以查看它是>还是<标识如下的版本:
if (checkFF86version("Firefox", "31.0.1"))
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox is Installed and is the latest version" });
else
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox needs updated" });
我已经解决了这个问题,我想我会为其他可能有这个问题的人发布决议。答案似乎很难找到。这可能会为您节省一些时间。特别感谢(CodeProject)上的"CodeK"对此解决方案的帮助。如果没有他,我永远不会完成。
public void GetNameAndVersion()
{
Microsoft.Win32.RegistryKey iRegKey = null;
Microsoft.Win32.RegistryKey iSubKey = null;
string eValue = null;
string eVersion = null;
string regpath = "Software''Microsoft''Windows''CurrentVersion''Uninstall";
iRegKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regpath);
string[] subkeys = iRegKey.GetSubKeyNames();
bool includes = false;
foreach (string subk in subkeys)
{
iSubKey = iRegKey.OpenSubKey(subk);
eValue = Convert.ToString(iSubKey.GetValue("DisplayName", ""));
eVersion = Convert.ToString(iSubKey.GetValue("DisplayVersion", ""));
if (eValue != null && eValue.Contains("Firefox"))
{
var version = eVersion;
var parsedversion = Version.Parse(version);
var minimumversion = new Version("35.0.1");
if (parsedversion >= minimumversion)
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox is the latest version or newer" });
else if (parsedversion < minimumversion)
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox needs reinstalled" });
else
includes = false;
}
}
}
}
}
我已经解决了这个问题,我想我会为其他可能有这个问题的人发布解决方案。答案似乎很难找到。这可能会为您节省一些时间。特别感谢(CodeProject)上的"CodeK"对此解决方案的帮助。如果没有他,我永远不会完成。
public void GetNameAndVersion()
{
Microsoft.Win32.RegistryKey iRegKey = null;
Microsoft.Win32.RegistryKey iSubKey = null;
string eValue = null;
string eVersion = null;
string regpath = "Software''Microsoft''Windows''CurrentVersion''Uninstall";
iRegKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regpath);
string[] subkeys = iRegKey.GetSubKeyNames();
bool includes = false;
foreach (string subk in subkeys)
{
iSubKey = iRegKey.OpenSubKey(subk);
eValue = Convert.ToString(iSubKey.GetValue("DisplayName", ""));
eVersion = Convert.ToString(iSubKey.GetValue("DisplayVersion", ""));
if (eValue != null && eValue.Contains("Firefox"))
{
var version = eVersion;
var parsedversion = Version.Parse(version);
var minimumversion = new Version("35.0.1");
if (parsedversion >= minimumversion)
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox is the latest version or newer" });
else if (parsedversion < minimumversion)
listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = "Firefox needs reinstalled" });
else
includes = false;
}
}
}
}
}