Пример #1
0
        /// <summary>
        /// 读取键值内容
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <param name="regKey">键值名称</param>
        /// <returns>键值内容</returns>
        public static object CF_ReadRegeditKey(ERegDomain regDomain, string subItem, string regKey)
        {
            //判断键值名称是否为空
            if (string.IsNullOrWhiteSpace(regKey))
            {
                return(null);
            }

            //键值内容结果
            object value = null;

            //判断键值是否存在
            if (CF_ExistRegeditKey(regDomain, subItem, regKey))
            {
                //打开注册表项
                using (RegistryKey key = OpenSubKey(regDomain, subItem))
                {
                    if (key != null)
                    {
                        value = key.GetValue(regKey);
                    }
                }
            }

            return(value);
        }
Пример #2
0
        /// <summary>
        /// 删除注册表项
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <returns>执行情况</returns>
        public static bool CF_DeleteSubItem(ERegDomain regDomain, string subItem)
        {
            //判断注册表项是否为空
            if (string.IsNullOrWhiteSpace(subItem))
            {
                return(false);
            }

            //创建基于注册表基项的节点
            using (RegistryKey key = GetRegDomain(regDomain))
            {
                if (CF_ExistSubItem(regDomain, subItem))
                {
                    //删除注册表项
                    try
                    {
                        key.DeleteSubKey(subItem);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }

            return(true);
        }
Пример #3
0
        /// <summary>
        /// 打开注册表项节点
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <param name="isWritable">是否需要节点Write访问权限</param>
        /// <returns>若注册表节点存在,则返回节点,否则返回null</returns>
        private static RegistryKey OpenSubKey(ERegDomain regDomain, string subItem, bool isWritable = false)
        {
            //判断注册表项名称是否为空
            if (subItem == string.Empty || subItem == null)
            {
                return(null);
            }


            //创建基于注册表基项的节点
            RegistryKey key = GetRegDomain(regDomain);

            //打开注册表项
            RegistryKey sKey;

            try
            {
                sKey = key.OpenSubKey(subItem, isWritable);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                key.Close();
            }

            return(sKey);
        }
Пример #4
0
        /// <summary>
        /// 删除键值
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <param name="regKey">键值名称</param>
        /// <returns>执行结果</returns>
        public static bool CF_DeleteRegeditKey(ERegDomain regDomain, string subItem, string regKey)
        {
            //判断注册表项和键值名称是否为空
            if (string.IsNullOrWhiteSpace(subItem) || string.IsNullOrWhiteSpace(regKey))
            {
                return(false);
            }

            //判断键值是否存在
            if (CF_ExistRegeditKey(regDomain, subItem, regKey))
            {
                //以可写方式打开注册表项
                using (RegistryKey key = OpenSubKey(regDomain, subItem, true))
                {
                    if (key == null)
                    {
                        return(false);
                    }

                    try
                    {
                        key.DeleteValue(regKey);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }

            return(true);
        }
Пример #5
0
        /// <summary>
        /// 设置指定的键值内容
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <param name="regKey">键值名称</param>
        /// <param name="valueKind">键值类型</param>
        /// <param name="value">键值内容</param>
        /// <returns>执行情况</returns>
        public static bool CF_WriteRegeditKey(ERegDomain regDomain, string subItem, string regKey, ERegValueKind valueKind, object value)
        {
            //判断键值名称是否为空
            if (string.IsNullOrWhiteSpace(regKey))
            {
                return(false);
            }

            //判断注册表项是否存在
            if (!CF_ExistSubItem(regDomain, subItem))
            {
                CF_CreateSubItem(regDomain, subItem);
            }

            //以可写方式打开注册表项
            using (RegistryKey key = OpenSubKey(regDomain, subItem, true))
            {
                //注册表项打开失败
                if (key == null)
                {
                    return(false);
                }

                try
                {
                    key.SetValue(regKey, value, GetRegValueKind(valueKind));
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            return(true);
        }
Пример #6
0
        /// <summary>
        /// 创建注册表项
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        public static bool CF_CreateSubItem(ERegDomain regDomain, string subItem)
        {
            //判断注册表项是否为空
            if (string.IsNullOrWhiteSpace(subItem))
            {
                return(false);
            }

            using (RegistryKey key = GetRegDomain(regDomain))
            {
                if (!CF_ExistSubItem(regDomain, subItem))
                {
                    try
                    {
                        _ = key.CreateSubKey(subItem);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }

            return(true);
        }
Пример #7
0
        /// <summary>
        /// 检测注册表键值是否存在
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <param name="regKey">键值名称</param>
        /// <returns>注册表键值存在情况</returns>
        public static bool CF_ExistRegeditKey(ERegDomain regDomain, string subItem, string regKey)
        {
            //判断键值名称是否为空
            if (string.IsNullOrWhiteSpace(regKey))
            {
                return(false);
            }

            //返回结果
            bool result = false;

            //判断注册表项是否存在
            if (CF_ExistSubItem(regDomain, subItem))
            {
                //打开注册表项
                using (RegistryKey key = OpenSubKey(regDomain, subItem))
                {
                    //键值集合
                    string[] regeditKeyNames = key.GetValueNames();

                    foreach (string regeditKey in regeditKeyNames)
                    {
                        if (string.Compare(regeditKey, regKey, true) == 0)
                        {
                            result = true;
                            break;
                        }
                    }
                }
            }

            return(result);
        }
Пример #8
0
        /// <summary>
        /// 检测注册表项是否存在
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <param name="subItem">注册表项名称</param>
        /// <returns>注册表项存在情况</returns>
        public static bool CF_ExistSubItem(ERegDomain regDomain, string subItem)
        {
            //判断注册表项是否为空
            if (string.IsNullOrWhiteSpace(subItem))
            {
                return(false);
            }

            bool result = false;

            using (RegistryKey key = OpenSubKey(regDomain, subItem))
            {
                result = key != null;
            }

            return(result);
        }
Пример #9
0
        /// <summary>
        /// 获取注册表基项域对应顶级节点
        /// </summary>
        /// <param name="regDomain">注册表基项域</param>
        /// <returns>对应顶级节点</returns>
        private static RegistryKey GetRegDomain(ERegDomain regDomain)
        {
            switch (regDomain)
            {
            case ERegDomain.ClassesRoot:
            {
                return(Registry.ClassesRoot);
            }

            case ERegDomain.CurrentUser:
            {
                return(Registry.CurrentUser);
            }

            case ERegDomain.LocalMachine:
            {
                return(Registry.LocalMachine);
            }

            case ERegDomain.User:
            {
                return(Registry.Users);
            }

            case ERegDomain.CurrentConfig:
            {
                return(Registry.CurrentConfig);
            }

            case ERegDomain.PerformanceData:
            {
                return(Registry.PerformanceData);
            }

            default:
            {
                return(Registry.LocalMachine);
            }
            }
        }
Пример #10
0
 /// <summary>
 /// 删除键值
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <returns>执行结果</returns>
 public static bool CF_DeleteRegeditKey(this ERegDomain regDomain, string subItem, string regKey)
 {
     return(RegOperate.CF_DeleteRegeditKey(regDomain, subItem, regKey));
 }
Пример #11
0
 /// <summary>
 /// 读取键值内容
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <returns>键值内容</returns>
 public static object CF_ReadRegeditKey(this ERegDomain regDomain, string subItem, string regKey)
 {
     return(RegOperate.CF_ReadRegeditKey(regDomain, subItem, regKey));
 }
Пример #12
0
 /// <summary>
 /// 设置指定的键值内容
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <param name="valueKind">键值类型</param>
 /// <param name="value">键值内容</param>
 /// <returns>执行情况</returns>
 public static bool CF_WriteRegeditKey(this ERegDomain regDomain, string subItem, string regKey, ERegValueKind valueKind, object value)
 {
     return(RegOperate.CF_WriteRegeditKey(regDomain, subItem, regKey, valueKind, value));
 }
Пример #13
0
 /// <summary>
 /// 删除注册表项
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <returns>执行情况</returns>
 public static bool CF_DeleteSubItem(this ERegDomain regDomain, string subItem)
 {
     return(RegOperate.CF_DeleteSubItem(regDomain, subItem));
 }