下面贴出自己用C#写的注册表操作类,欢迎大家拍砖!
1.注册表基项静态域
1 /// <summary> 2 /// 注册表基项静态域 3 /// 4 /// 主要包括: 5 /// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 6 /// 2.Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 7 /// 3.Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键 8 /// 4.Registry.User 对应于 HKEY_USER主键 9 /// 5.Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键 10 /// 6.Registry.DynDa 对应于HKEY_DYN_DATA主键 11 /// 7.Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键 12 /// 13 /// 版本:1.0 14 /// </summary> 15 public enum RegDomain 16 { 17 /// <summary> 18 /// 对应于HKEY_CLASSES_ROOT主键 19 /// </summary> 20 ClassesRoot = 0, 21 /// <summary> 22 /// 对应于HKEY_CURRENT_USER主键 23 /// </summary> 24 CurrentUser = 1, 25 /// <summary> 26 /// 对应于 HKEY_LOCAL_MACHINE主键 27 /// </summary> 28 LocalMachine = 2, 29 /// <summary> 30 /// 对应于 HKEY_USER主键 31 /// </summary> 32 User = 3, 33 /// <summary> 34 /// 对应于HEKY_CURRENT_CONFIG主键 35 /// </summary> 36 CurrentConfig = 4, 37 /// <summary> 38 /// 对应于HKEY_DYN_DATA主键 39 /// </summary> 40 DynDa = 5, 41 /// <summary> 42 /// 对应于HKEY_PERFORMANCE_DATA主键 43 /// </summary> 44 PerformanceData = 6, 45 }
2.指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型
1 /// <summary> 2 /// 指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型 3 /// 4 /// 主要包括: 5 /// 1.RegistryValueKind.Unknown 6 /// 2.RegistryValueKind.String 7 /// 3.RegistryValueKind.ExpandString 8 /// 4.RegistryValueKind.Binary 9 /// 5.RegistryValueKind.DWord 10 /// 6.RegistryValueKind.MultiString 11 /// 7.RegistryValueKind.QWord 12 /// 13 /// 版本:1.0 14 /// </summary> 15 public enum RegValueKind 16 { 17 /// <summary> 18 /// 指示一个不受支持的注册表数据类型。例如,不支持 Microsoft Win32 API 注册表数据类型 REG_RESOURCE_LIST。使用此值指定 19 /// </summary> 20 Unknown = 0, 21 /// <summary> 22 /// 指定一个以 Null 结尾的字符串。此值与 Win32 API 注册表数据类型 REG_SZ 等效。 23 /// </summary> 24 String = 1, 25 /// <summary> 26 /// 指定一个以 NULL 结尾的字符串,该字符串中包含对环境变量(如 %PATH%,当值被检索时,就会展开)的未展开的引用。 27 /// 此值与 Win32 API注册表数据类型 REG_EXPAND_SZ 等效。 28 /// </summary> 29 ExpandString = 2, 30 /// <summary> 31 /// 指定任意格式的二进制数据。此值与 Win32 API 注册表数据类型 REG_BINARY 等效。 32 /// </summary> 33 Binary = 3, 34 /// <summary> 35 /// 指定一个 32 位二进制数。此值与 Win32 API 注册表数据类型 REG_DWORD 等效。 36 /// </summary> 37 DWord = 4, 38 /// <summary> 39 /// 指定一个以 NULL 结尾的字符串数组,以两个空字符结束。此值与 Win32 API 注册表数据类型 REG_MULTI_SZ 等效。 40 /// </summary> 41 MultiString = 5, 42 /// <summary> 43 /// 指定一个 64 位二进制数。此值与 Win32 API 注册表数据类型 REG_QWORD 等效。 44 /// </summary> 45 QWord = 6, 46 }
3.注册表操作类
1 /// <summary> 2 /// 注册表操作类 3 /// 4 /// 主要包括以下操作: 5 /// 1.创建注册表项 6 /// 2.读取注册表项 7 /// 3.判断注册表项是否存在 8 /// 4.删除注册表项 9 /// 5.创建注册表键值 10 /// 6.读取注册表键值 11 /// 7.判断注册表键值是否存在 12 /// 8.删除注册表键值 13 /// 14 /// 版本:1.0 15 /// </summary> 16 public class Register 17 { 18 #region 字段定义 19 /// <summary> 20 /// 注册表项名称 21 /// </summary> 22 private string _subkey; 23 /// <summary> 24 /// 注册表基项域 25 /// </summary> 26 private RegDomain _domain; 27 /// <summary> 28 /// 注册表键值 29 /// </summary> 30 private string _regeditkey; 31 #endregion 32 33 #region 属性 34 /// <summary> 35 /// 设置注册表项名称 36 /// </summary> 37 public string SubKey 38 { 39 //get { return _subkey; } 40 set { _subkey = value; } 41 } 42 43 /// <summary> 44 /// 注册表基项域 45 /// </summary> 46 public RegDomain Domain 47 { 48 ///get { return _domain; } 49 set { _domain = value; } 50 } 51 52 /// <summary> 53 /// 注册表键值 54 /// </summary> 55 public string RegeditKey 56 { 57 ///get{return _regeditkey;} 58 set { _regeditkey = value; } 59 } 60 #endregion 61 62 #region 构造函数 63 public Register() 64 { 65 ///默认注册表项名称 66 _subkey = "software\\"; 67 ///默认注册表基项域 68 _domain = RegDomain.LocalMachine; 69 } 70 71 /// <summary> 72 /// 构造函数 73 /// </summary> 74 /// <param name="subKey">注册表项名称</param> 75 /// <param name="regDomain">注册表基项域</param> 76 public Register(string subKey, RegDomain regDomain) 77 { 78 ///设置注册表项名称 79 _subkey = subKey; 80 ///设置注册表基项域 81 _domain = regDomain; 82 } 83 #endregion 84 85 #region 公有方法 86 #region 创建注册表项 87 /// <summary> 88 /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面(请先设置SubKey属性) 89 /// 虚方法,子类可进行重写 90 /// </summary> 91 public virtual void CreateSubKey() 92 { 93 ///判断注册表项名称是否为空,如果为空,返回false 94 if (_subkey == string.Empty || _subkey == null) 95 { 96 return; 97 } 98 99 ///创建基于注册表基项的节点 100 RegistryKey key = GetRegDomain(_domain); 101 102 ///要创建的注册表项的节点 103 RegistryKey sKey; 104 if (!IsSubKeyExist()) 105 { 106 sKey = key.CreateSubKey(_subkey); 107 } 108 //sKey.Close(); 109 ///关闭对注册表项的更改 110 key.Close(); 111 } 112 113 /// <summary> 114 /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面 115 /// 虚方法,子类可进行重写 116 /// 例子:如subkey是software\\higame\\,则将创建HKEY_LOCAL_MACHINE\\software\\higame\\注册表项 117 /// </summary> 118 /// <param name="subKey">注册表项名称</param> 119 public virtual void CreateSubKey(string subKey) 120 { 121 ///判断注册表项名称是否为空,如果为空,返回false 122 if (subKey == string.Empty || subKey == null) 123 { 124 return; 125 } 126 127 ///创建基于注册表基项的节点 128 RegistryKey key = GetRegDomain(_domain); 129 130 ///要创建的注册表项的节点 131 RegistryKey sKey; 132 if (!IsSubKeyExist(subKey)) 133 { 134 sKey = key.CreateSubKey(subKey); 135 } 136 //sKey.Close(); 137 ///关闭对注册表项的更改 138 key.Close(); 139 } 140 141 /// <summary> 142 /// 创建注册表项,默认创建在注册表基项 HKEY_LOCAL_MACHINE下面 143 /// 虚方法,子类可进行重写 144 /// </summary> 145 /// <param name="regDomain">注册表基项域</param> 146 public virtual void CreateSubKey(RegDomain regDomain) 147 { 148 ///判断注册表项名称是否为空,如果为空,返回false
|
请发表评论