首页 > 学院 > 开发设计 > 正文

C#注册表操作类(完整版) 整理完整

2019-11-17 03:18:29
字体:
来源:转载
供稿:网友

C#注册表操作类(完整版) 整理完整

/// <summary> /// 注册表基项静态域 /// /// 主要包括: /// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 /// 2.Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 /// 3.Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键 /// 4.Registry.User 对应于 HKEY_USER主键 /// 5.Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键 /// 6.Registry.DynDa 对应于HKEY_DYN_DATA主键 /// 7.Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键 /// /// 版本:1.0 /// </summary> public enum RegDomain { /// <summary> /// 对应于HKEY_CLASSES_ROOT主键 /// </summary> ClassesRoot = 0, /// <summary> /// 对应于HKEY_CURRENT_USER主键 /// </summary> CurrentUser = 1, /// <summary> /// 对应于 HKEY_LOCAL_MACHINE主键 /// </summary> LocalMachine = 2, /// <summary> /// 对应于 HKEY_USER主键 /// </summary> User = 3, /// <summary> /// 对应于HEKY_CURRENT_CONFIG主键 /// </summary> CurrentConfig = 4, /// <summary> /// 对应于HKEY_DYN_DATA主键 /// </summary> DynDa = 5, /// <summary> /// 对应于HKEY_PERFORMANCE_DATA主键 /// </summary> PerformanceData = 6, }

/// <summary> /// 指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型 /// /// 主要包括: /// 1.RegistryValueKind.Unknown /// 2.RegistryValueKind.String /// 3.RegistryValueKind.ExpandString /// 4.RegistryValueKind.Binary /// 5.RegistryValueKind.DWord /// 6.RegistryValueKind.MultiString /// 7.RegistryValueKind.QWord /// /// 版本:1.0 /// </summary> public enum RegValueKind { /// <summary> /// 指示一个不受支持的注册表数据类型。例如,不支持 Microsoft Win32 API 注册表数据类型 REG_RESOURCE_LIST。使用此值指定 /// </summary> Unknown = 0, /// <summary> /// 指定一个以 Null 结尾的字符串。此值与 Win32 API 注册表数据类型 REG_SZ 等效。 /// </summary> String = 1, /// <summary> /// 指定一个以 NULL 结尾的字符串,该字符串中包含对环境变量(如 %PATH%,当值被检索时,就会展开)的未展开的引用。 /// 此值与 Win32 API注册表数据类型 REG_EXPAND_SZ 等效。 /// </summary> ExpandString = 2, /// <summary> /// 指定任意格式的二进制数据。此值与 Win32 API 注册表数据类型 REG_BINARY 等效。 /// </summary> Binary = 3, /// <summary> /// 指定一个 32 位二进制数。此值与 Win32 API 注册表数据类型 REG_DWORD 等效。 /// </summary> DWord = 4, /// <summary> /// 指定一个以 NULL 结尾的字符串数组,以两个空字符结束。此值与 Win32 API 注册表数据类型 REG_MULTI_SZ 等效。 /// </summary> MultiString = 5, /// <summary> /// 指定一个 64 位二进制数。此值与 Win32 API 注册表数据类型 REG_QWORD 等效。 /// </summary> QWord = 6, }

/// <summary> /// 注册表操作类 /// /// 主要包括以下操作: /// 1.创建注册表项 /// 2.读取注册表项 /// 3.判断注册表项是否存在 /// 4.删除注册表项 /// 5.创建注册表键值 /// 6.读取注册表键值 /// 7.判断注册表键值是否存在 /// 8.删除注册表键值 /// /// 版本:1.0 /// </summary> public class Register { #region 字段定义 /// <summary> /// 注册表项名称 /// </summary> PRivate string _subkey; /// <summary> /// 注册表基项域 /// </summary> private RegDomain _domain; /// <summary> /// 注册表键值 /// </summary> private string _regeditkey; #endregion

#region 属性 /// <summary> /// 设置注册表项名称 /// </summary> public string SubKey { //get { return _subkey; } set { _subkey = value; } }

/// <summary> /// 注册表基项域 /// </summary> public RegDomain Domain { ///get { return _domain; } set { _domain = value; } }

/// <summary> /// 注册表键值 /// </summary> public string RegeditKey { ///get{return _regeditkey;} set { _regeditkey = value; } } #endregion

#region 构造函数 public Register() { ///默认注册表项名称 _subkey = "software//"; ///默认注册表基项域 _domain = RegDomain.LocalMachine; }

/// <summary> /// 构造函数 /// </summary> /// <param name="subKey">注册表项名称</param> /// <param name="regDomain">注册表基项域</param> public Register(string subKey, RegDomain regDomain) { ///设置注册表项名称 _subkey = subKey; ///设置注册表基项域 _domain = regDomain; } #endregion

#region 公有方法 #region 创建注册表项 /// <summary> /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面(请先设置SubKey属性) /// 虚方法,子类可进行重写 /// </summary> public virtual void CreateSubKey() { ///判断注册表项名称是否为空,如果为空,返回false if (_subkey == string.Empty || _subkey == null) { return; }

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

///要创建的注册表项的节点 RegistryKey sKey; if (!IsSubKeyExist()) { sKey = key.CreateSubKey(_subkey); } //sKey.Close(); ///关闭对注册表项的更改 key.Close(); }

/// <summary> /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面 /// 虚方法,子类可进行重写 /// 例子:如subkey是software//higame//,则将创建HKEY_LOCAL_MACHINE//software//higame//注册表项 /// </summary> /// <param name="subKey">注册表项名称</param> public virtual void CreateSubKey(string subKey) { ///判断注册表项名称是否为空,如果为空,返回false if (subKey == string.Empty || subKey == null) { return; }

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

///要创建的注册表项的节点 RegistryKey sKey; if (!IsSubKeyExist(subKey)) { sKey = key.CreateSubKey(subKey); } //sKey.Close(); ///关闭对注册表项的更改 key.Close(); }

/// <summary> /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面 /// 虚方法,子类可进行重写 /// </summary> /// <param name="regDomain">注册表基项域</param> public virtual void CreateSubKey(RegDomain regDomain) { ///判断注册表项名称是否为空,如果为空,返回false if (_subkey == string.Empty || _subkey == null) { return; }

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

///要创建的注册表项的节点 RegistryKey sKey; if (!IsSubKeyExist(regDomain)) { sKey = key.CreateSubKey(_subkey); } //sKey.Close(); ///关闭对注册表项的更改 key.Close(); }

/// <summary> /// 创建注册表项(请先设置SubKey属性) /// 虚方法,子类可进行重写 /// 例子:如regDomain是HKEY_LOCAL_MACHINE,subkey是software//higame//,则将创建HKEY_LOCAL_MACHINE//software//higame//注册表项 /// </summary> /// <param name="subKey">注册表项名称</param> /// <param name="regDomain">注册表基项域</param> public virtual void CreateSubKey(string subKey, RegDomain regDomain) { ///判断注册表项名称是否为空,如果为空,返回false if (subKey == string.Empty || subKey == null) { return; }

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

///要创建的注册表项的节点 RegistryKey sKey; if (!IsSubKeyExist(subKey, regDomain)) { sKey = key.CreateSubKey(subKey); } //sKey.Close(); ///关闭对注册表项的更改 key.Close(); } #endregion

#region 判断注册表项是否存在 /// <summary> /// 判断注册表项是否存在,默认是在注册表基项HKEY_LOCAL_MACHINE下判断(请先设置SubKey属性) /// 虚方法,子

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表