RegeditUtils 注册表

 #region 打开注册表LocalMachine项的SOFTWARE
        /// <summary>
        /// 打开注册表LocalMachine项的SOFTWARE
        /// </summary>
        /// <param name="pathname">项下子项</param>
        /// <param name="Xname">项名称</param>
        /// <param name="KeyName">键值名称</param>
        /// <param name="KeyValue">键值</param>
        /// <param name="error">错误信息</param>
        /// <returns></returns>
        public bool OpenRegedit(string pathname, string Xname, string KeyName, string KeyValue, ref string error)
        {
            try
            {
                //获取Machine根项
                RegistryKey machine = Registry.LocalMachine;
                //打开SOFTWARE项
                RegistryKey software = machine.OpenSubKey("SOFTWARE", true);
                //新项MyApplication项
                RegistryKey myApplication = software.CreateSubKey(Xname);
                RegistryKey subkey = myApplication.CreateSubKey(pathname);
                //新建键值,当键值名称为空时,将被设置为默认值
                //subkey.SetValue(null, Application.StartupPath);
                //subkey.SetValue(KeyName, Application.UserAppDataPath);
                subkey.SetValue(KeyName, KeyValue);
                return true;
            }
            catch (Exception aa)
            {
                error = aa.ToString();
                return false;
            }
        }
        #endregion

        #region 设置开机启动项
        /// <summary>
        /// 设置开机启动项
        /// </summary>
        /// <param name="name">启动项名称</param>
        /// <param name="path">启动项exe路径</param>
        /// <param name="error">错误信息</param>
        /// <returns></returns>
        public bool SetKjqdx(string name, string path, ref string error)
        {
            try
            {
                //打开注册表子项
                RegistryKey key = Registry.LocalMachine
                    .OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                //增加开机启动项
                key.SetValue(name, path);
                return true;
            }
            catch (Exception aa)
            {
                error = aa.ToString();
                return false;
            }
        } 
        #endregion

        #region 创建注册表项
        /// <summary>
        /// 创建注册表项
        /// </summary>
        /// <param name="keyname"></param>
        /// <returns></returns>
        public bool AddRegedit(string pathname)
        {
            try
            {
                RegistryKey key = Registry.LocalMachine;
                RegistryKey software = key.CreateSubKey("software\\" + pathname);
                key.Close();
                return true;
            }
            catch (Exception aa)
            {
                //MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }
        #endregion

        #region 删除注册表项
        /// <summary>
        /// 
        /// </summary>
        /// <param name="keyname"></param>
        /// <returns></returns>
        public bool DeleteRegedit(string pathname)
        {
            try
            {
                RegistryKey key = Registry.LocalMachine;
                key.DeleteSubKey("software\\" + pathname, true);   //该方法无返回值,直接调用即可
                key.Close();
                return true;
            }
            catch (Exception aa)
            {
                //MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
                //throw;
            }
        }
        #endregion

        #region 设置注册表键值
        public bool EditRegedit(string pathname, string keyname, string keyvalue)
        {
            try
            {
                RegistryKey key = Registry.LocalMachine;
                if(!IsRegeditItemExist(pathname))
                {
                    AddRegedit(pathname);
                }
                RegistryKey software = key.OpenSubKey("software\\"+ pathname, true); //该项必须已存在
                software.SetValue(keyname, keyvalue);
                software.Close();
                return true;
            }
            catch (Exception aa)
            {
               // MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
                //throw;
            }
        }

        #endregion

        #region 读取注册表键值
        /// <summary>
        /// 
        /// </summary>
        /// <param name="keyname"></param>
        /// <param name="keyvalue">返回value</param>
        /// <returns></returns>
        public bool ReadRegedit(string keyname,string pathname, ref string keyvalue)
        {
            try
            {
                if(!IsRegeditKeyExit( pathname,  keyname))
                {
                    return false;
                }
                string info = "";
                RegistryKey Key, myreg;
                Key = Registry.LocalMachine;
                myreg = Key.OpenSubKey("software\\"+ pathname);
                // myreg = Key.OpenSubKey("software\\test",true);
                info = myreg.GetValue(keyname).ToString();
                keyvalue = info;
                myreg.Close();
                return true;
            }
            catch (Exception aa)
            {
                //MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
                //throw;
            }
        }

        #endregion

        #region 判断注册表项是否存在
        /// <summary>
        /// 判断注册表项是否存在
        /// </summary>
        /// <param name="kename">键值名称</param>
        /// <returns></returns>
        public bool IsRegeditItemExist(string kename)

        {
            try
            {
                string[] subkeyNames;
                RegistryKey hkml = Registry.LocalMachine;
                RegistryKey software = hkml.OpenSubKey("SOFTWARE\\");
                //RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
                subkeyNames = software.GetSubKeyNames();
                //取得该项下所有子项的名称的序列,并传递给预定的数组中
                foreach (string keyName in subkeyNames)  //遍历整个数组
                {
                    if (keyName == kename) //判断子项的名称
                    {
                        hkml.Close();
                        return true;
                    }
                }
                hkml.Close();
                return false;
            }
            catch (Exception aa)
            {
               // MessageBox.Show(aa.ToString(), "错误提示",MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
                
            }
        }
        #endregion

        #region 判断键值是否存在
        /// <summary>
        /// 判断键值是否存在
        /// </summary>
        /// <param name="keyname"></param>
        /// <returns></returns>
        public bool IsRegeditKeyExit(string pathname,string keyname)
        {
            try
            {
                string[] subkeyNames;
                RegistryKey hkml = Registry.LocalMachine;
                RegistryKey software = hkml.OpenSubKey("SOFTWARE\\"+ pathname);
                //RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test", true);
                subkeyNames = software.GetValueNames();
                //取得该项下所有键值的名称的序列,并传递给预定的数组中
                foreach (string keyName in subkeyNames)
                {
                    if (keyName == keyname)  //判断键值的名称
                    {
                        hkml.Close();
                        return true;
                    }
                }
                hkml.Close();
                return false;
            }
            catch (Exception aa)
            {
                //MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }
        #endregion

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值