读取注册表获取安装软件信息

本文介绍如何使用注册表来记录和查找程序安装路径,并提供启动相应程序的方法。此外,还介绍了如何利用注册表来检查特定软件是否已安装及获取其版本信息。

一、主要记录主动写入注册表安装路径,程序查找安装路径并启动相应的程序。

1、写入注册表程序的路径,如下图:

2、 封装读取固定注册表方法

      // <summary>

        ///     读取
        /// </summary>
        /// <param name="keyPath">注册表路径</param>
        /// <param name="keyName">注册表对应的项目名称</param>
        public static string GetValue(string keyPath, string keyName)
        {
            RegistryKey key = Registry.ClassesRoot;
            try
            {
                RegistryKey myreg = key.OpenSubKey(@keyPath);
                if (!Equals(myreg, null))
                    return myreg.GetValue(keyName).ToString();
                return string.Empty;
            }
            finally
            {
                key.Close();
            }
        }

3、读取注册表的值并启动相关程序

       /// <summary>
        /// 读取注册表获取程序路径并运行
        /// </summary>
        private static void GetRegist(string strParams)
        {
            string path = GetValue(@"ceshi\login", "path").ToString(); //获取注册表的值
            if (!Equals(path, null))
            {
                try
                {
                    Process pro = new Process();
                    pro.StartInfo.FileName = Path.Combine(System.Windows.Forms.Application.StartupPath, "JHMRConvertPDF.exe");
                    pro.StartInfo.Arguments = strParams;
                    pro.StartInfo.Verb = "Open";
                    pro.StartInfo.CreateNoWindow = false;
                    if (!File.Exists(pro.StartInfo.FileName))
                    {
                        MessageBox.Show("不存在当前程序,请检查注册表是否正确");
                    }

                    pro.Start();

                    pro.WaitForExit();
                   
                }
                catch (Exception ex)
                {
                  
                }
            }
        }
 

 

二、查看注册表是否安装了某个软件:

 /// <summary>
        /// Checks the security control.
        /// </summary>
        /// <returns></returns>
        public bool CheckSecurityControl()
        {
            bool flag;
            try
            {
                Guid guid = new Guid("3F367B74-92D9-4C5E-AB93-234F8A91D5E6");
                Activator.CreateInstance(Type.GetTypeFromCLSID(guid, true));
                flag = true;
            }
            catch
            {
                flag = false;
            }
            return flag;
        }

2、通过注册表查看安装软件版本:

        /// <summary>
        /// Checks the security version.
        /// </summary>
        /// <param name="curVersionStr">The current version string.</param>
        /// <returns></returns>
        public bool CheckSecurityVersion(out string curVersionStr)
        {
            bool flag;
            curVersionStr = string.Empty;
            try
            {
                curVersionStr = get_current_version();
                flag = new Version(curVersionStr).CompareTo(new Version("2.8.0.5")) >= 0;
            }
            catch
            {
                flag = false;
            }
            return flag;
        }


        /// <summary>
        /// Gets the current version.
        /// </summary>
        /// <returns></returns>
        private string get_current_version()
        {
            string str = read_reg(Registry.LocalMachine, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\CertApp", "DisplayVersion");
            if (string.IsNullOrEmpty(str))
            {
                str = read_reg(Registry.LocalMachine, "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\CertApp", "DisplayVersion");
            }
            if (string.IsNullOrEmpty(str))
            {
                str = "0.0.0.0";
            }
            return str;
        }


        /// <summary>
        /// Reads the reg.
        /// </summary>
        /// <param name="obj">The object.</param>
        /// <param name="strSubKey">The string sub key.</param>
        /// <param name="key">The key.</param>
        /// <returns></returns>
        private string read_reg(RegistryKey obj, string strSubKey, string key)
        {
            string empty;
            try
            {
                RegistryKey registryKey = obj.OpenSubKey(strSubKey);
                if (registryKey != null)
                {
                    object value = registryKey.GetValue(key);
                    empty = value?.ToString() ?? string.Empty;
                }
                else
                {
                    empty = string.Empty;
                }
            }
            catch
            {
                empty = string.Empty;
            }
            return empty;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值