循环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;
                 }
            }
        }
    }
}

循环FireFox的卸载密钥时为Null值

我已经解决了这个问题,我想我会为其他可能有这个问题的人发布解决方案。答案似乎很难找到。这可能会为您节省一些时间。特别感谢(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;
             }
        }
    }
}

}