VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c# 操纵注册表

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  注册表的作用显而易见,通过操纵注册表可以很快捷、方便的决解问题,下面模仿“注册表编辑器”列出系统信息。

  通过RegistryKey类的GetSubKeyNames方法读取子键信息列表,实现将5大根键的子键信息读取出来,放在TreeView控件中,程序代码如下。    privatevoidBanding()
    {
      this.TVRegedit.Nodes.Clear();
      RegistryKeyrkRoot=Registry.ClassesRoot;
      RegistryKeyrkUse=Registry.CurrentUser;
      RegistryKeyrkMachine=Registry.LocalMachine;
      RegistryKeyrkUsers=Registry.Users;
      RegistryKeyrkConfig=Registry.CurrentConfig;
      TreeNodetRoot=newTreeNode("HKEY_CLASSES_ROOT");
      foreach(stringsiinrkRoot.GetSubKeyNames())
      {
        tRoot.Nodes.Add(si.ToString());
      }
 
      TreeNodetUse=newTreeNode("HKEY_CURRENT_USER");
      foreach(stringsiinrkUse.GetSubKeyNames())
      {
        tUse.Nodes.Add(si.ToString());
      }
      TreeNodetMachine=newTreeNode("HKEY_LOCAL_MACHINE");
      foreach(stringsiinrkMachine.GetSubKeyNames())
      {
        tMachine.Nodes.Add(si.ToString());
      }
      TreeNodetUsers=newTreeNode("HKEY_USERS");
      foreach(stringsiinrkUsers.GetSubKeyNames())
      {
        tUsers.Nodes.Add(si.ToString());
      }
      TreeNodetConfig=newTreeNode("HKEY_CURRENT_CONFIG");
      foreach(stringsiinrkConfig.GetSubKeyNames())
      {
        tConfig.Nodes.Add(si.ToString());
      }
      this.TVRegedit.Nodes.Add(tRoot);
      this.TVRegedit.Nodes.Add(tUse);
      this.TVRegedit.Nodes.Add(tMachine);
      this.TVRegedit.Nodes.Add(tUsers);
      this.TVRegedit.Nodes.Add(tConfig);
    }

  通过Registry 类的SetValue方法,完成创建子键同时为子键创建键值项以及设置键值。代码如下:privatevoidbutton1_Click(objectsender,EventArgse)
    {
      //设默认值
      string 
      keyName=this.label2.Text.Trim().ToString()+""+this.textBox1.
      Text.Trim().ToString();
      objectobj=(object)this.textBox2.Text.Trim();
      stringstrName=this.textBox3.Text.Trim().ToString();
      if(strReader!=string.Empty)
      {
        switch(strReader)
        {
          case"one":
            {
              Registry.SetValue(keyName,strName,obj,      
              RegistryValueKind.String);
              break;
            }
          case"four":
            {
              Registry.SetValue(keyName,strName,obj,
              RegistryValueKind.ExpandString);
              break;
            }
 
        }
        this.Banding();
      }
      else
      {
        MessageBox.Show("请选择创建方式(例如字符串型)");
      } 
    }

  通过RegistryKey类的GetValue方法,实现键值项与键值的读取。为了方便学习,笔者在读键值时只取出其中一个值。代码如下: privatevoidbutton5_Click(objectsender,EventArgse)
    {
      stringstr=this.label2.Text.Trim().ToString();
      stringdefalutResut;
      if(str.IndexOf("")!=-1)
      {
        defalutResut=str.Substring(0,str.IndexOf(""));
        str=str.Substring(str.IndexOf("")+1);
      }
      else
      {
        defalutResut=str;
      }
      switch(defalutResut)
      {
        case"HKEY_CLASSES_ROOT":
          {
            rkey=Registry.ClassesRoot;
            break;
          }
        case"HKEY_CURRENT_USER":
          {
            rkey=Registry.CurrentUser;
            break;
          }
        case"HKEY_LOCAL_MACHINE":
          {
            rkey=Registry.LocalMachine;
            break;
          }
        case"HKEY_USERS":
          {
            rkey=Registry.Users;
            break;
          }
        case"HKEY_CURRENT_CONFIG":
          {
            rkey=Registry.CurrentConfig;
            break;
          }
      }
      try
      {
        RegistryKeyrkeyS=rkey.OpenSubKey(str);
        if(rkeyS.ValueCount>0)
        {
          foreach(stringstrValueinrkeyS.GetValueNames())
          {
            MessageBox.Show(strValue+"项的值是:"+ 
            rkeyS.GetValue(strValue).ToString());
            break;
          }
        }
        else
        {
          MessageBox.Show("无显示值");
        }
        
      }
      catch
      {
        MessageBox.Show("无显示值");
      }
    }

  通过Registry 类的DeleteSubKeyTree方法实现删除子键的功能。代码如下:

privatevoidbutton4_Click(objectsender,EventArgse)
    {
      stringstr=this.label2.Text.Trim().ToString();
      str=str.Substring(str.IndexOf("")+1);
      Registry.CurrentConfig.DeleteSubKeyTree(str);
      this.Banding();
      
    }



相关教程