当前位置:编程学习 > C#/ASP.NET >>

基于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# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,