基于C#操作注册表
1摘要
2C#对注册表操作进行了封装;对Windows注册表操作变得异常简单。本程序实现了对Putty注册表的创建,修改,删除等操作,是一个不错的应用范例。
3介绍
4C#的Registry类提供了Windows注册表根项的RegistryKey对象,并提供静态访问项/值的方法。例如,对putty而言,我们的操作的根可选成:
5RegistryKey rkRoot = Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("SimonTatham").OpenSubKey("PuTTY").OpenSubKey("Sessions");
6
7对session进行管理是程序的主要目标。
8RegistryKey表示Windows注册表中的项级节点;对值操作需要使用其方法,主要是:
9OpenSubKey
10CreateSubKey
11SetValue
12GetValue
13Close
14修改项值
15实例代码将所有基于rlogin的会话用户/密码改为root/123456。
16 const string key1_name = "UserName";
17 const string key2_name = "UserPasswd";
18
19 RegistryKey rkRoot =
20 Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("SimonTatham").OpenSubKey("PuTTY").OpenSubKey("Sessions");
21 for (int i = 0; i < listBox4.SelectedItems.Count; i++)
22 {
23 string ss = (string)listBox4.SelectedItems[i];
24 listBox1.Items.Add("handling session:" + ss);
25 RegistryKey rkSession = rkRoot.OpenSubKey(ss, RegistryKeyPermissionCheck.ReadWriteSubTree);
26 //判断是否为rlogin
27 if (val_protocol == (string)rkSession.GetValue(key_protocol))
28 {
29 //修改用户名/密码
30 rkSession.SetValue(key1_name, textBox1.Text);
31 rkSession.SetValue(key2_name, textBox2.Text);
32 }
33 else
34 {
35 listBox1.Items.Add("does not handle " + ss + " because it is not a rlogin type session.");
36 }
37 rkSession.Close();
38 }
39创建项值
40本程序支持将注册表dump出来,并支持load,实际是创建。
41 string sn = (string)listBox3.SelectedItems[i];
42 RegistryKey rkSn = rkRoot.OpenSubKey(sn, RegistryKeyPermissionCheck.ReadWriteSubTree);
43 listBox1.Items.Add("handling " + sn);
44 ArrayList al = (ArrayList)session_datas[sn];
45 for (int j = 0; j < al.Count; j++)
46 {
47 ArrayList items = (ArrayList)al[j];
48 string subkey = (string)(items[0]);
49 RegistryValueKind rvk = (RegistryValueKind)items[1];
50 string v = (string)items[2];
51 if (rvk == RegistryValueKind.DWord)
52 {
53  
补充:软件开发 , C# ,