• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【原创】C#注册表操作类(完整版)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

下面贴出自己用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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#泛型接口发布时间:2022-07-10
下一篇:
C# GDI绘图之——画笔和画刷发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap