基于C#操作注册表

 

基于C#操作注册表

摘要

C#对注册表操作进行了封装;对Windows注册表操作变得异常简单。本程序实现了对Putty注册表的创建,修改,删除等操作,是一个不错的应用范例。

介绍

C#的Registry类提供了Windows注册表根项的RegistryKey对象,并提供静态访问项/值的方法。例如,对putty而言,我们的操作的根可选成:
RegistryKey rkRoot =
                        Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("SimonTatham").OpenSubKey("PuTTY").OpenSubKey("Sessions");
 
对session进行管理是程序的主要目标。
RegistryKey表示Windows注册表中的项级节点;对值操作需要使用其方法,主要是:

修改项值

实例代码将所有基于rlogin的会话用户/密码改为root/123456。
                    const string key1_name = "UserName";
                    const string key2_name = "UserPasswd";
 
                    RegistryKey rkRoot =
                        Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("SimonTatham").OpenSubKey("PuTTY").OpenSubKey("Sessions");
                    for (int i = 0; i < listBox4.SelectedItems.Count; i++)                                       
                    {
                        string ss = (string)listBox4.SelectedItems[i];
                        listBox1.Items.Add("handling session:" + ss);
                        RegistryKey rkSession = rkRoot.OpenSubKey(ss, RegistryKeyPermissionCheck.ReadWriteSubTree);
                        //判断是否为rlogin
                        if (val_protocol == (string)rkSession.GetValue(key_protocol))
                        {
                            //修改用户名/密码
                            rkSession.SetValue(key1_name, textBox1.Text);
                            rkSession.SetValue(key2_name, textBox2.Text);
                        }
                        else
                        {
                            listBox1.Items.Add("does not handle " + ss + " because it is not a rlogin type session.");
                        }
                        rkSession.Close();
                    }

创建项值

本程序支持将注册表dump出来,并支持load,实际是创建。
                        string sn = (string)listBox3.SelectedItems[i];
                        RegistryKey rkSn = rkRoot.OpenSubKey(sn, RegistryKeyPermissionCheck.ReadWriteSubTree);
                        listBox1.Items.Add("handling " + sn);
                        ArrayList al = (ArrayList)session_datas[sn];
                        for (int j = 0; j < al.Count; j++)
                        {
                            ArrayList items = (ArrayList)al[j];
                            string subkey = (string)(items[0]);
                            RegistryValueKind rvk = (RegistryValueKind)items[1];
                            string v = (string)items[2];
                            if (rvk == RegistryValueKind.DWord)
                            {                               
                                int dv = Int32.Parse(v, NumberStyles.HexNumber);
                                rkSn.SetValue(subkey, dv, rvk);
                            }
                            else
                            {                               
                                rkSn.SetValue(subkey, v, rvk);
                            }
                        }
                        rkSn.Close();

删除键值

                if (DialogResult.Yes == MessageBox.Show("Please backup your entries first in Dump Tab, have you done this job?", "Confirm", MessageBoxButtons.YesNo))
                {
                    RegistryKey rkRoot =
                        Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("SimonTatham").OpenSubKey("PuTTY").OpenSubKey("Sessions", RegistryKeyPermissionCheck.ReadWriteSubTree);
                    for (int i = 0; i < listBox4.SelectedItems.Count; i++)
                    {
                       string ss = (string)listBox4.SelectedItems[i];
                        listBox1.Items.Add("handling session:" + ss);                 
                        rkRoot.DeleteSubKey(ss);
                        listBox1.Items.Add(ss + " removed.");
                        this.listBox4.Items.Remove(listBox4.SelectedItems[i]);
                       
                    }
                    listBox1.Items.Add("job done.");
                    rkRoot.Close();
                }
 

结束语

基于C#操作注册表非常方便;无须详细说明。
 
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值