C#读写注册表的思路及代码

所属分类: 软件编程 / C#教程 阅读数: 105
收藏 0 赞 0 分享

NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey。这两个类都是密封类不允许被继承。下面我们分别来介绍这两个类。
Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有)分别是: 
Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键
 Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
 Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
 Registry.User 对应于 HKEY_USER主键
 Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
 Registry.DynDa 对应于HKEY_DYN_DATA主键
 Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
RegistryKey类中提供了对注册表操作的方法。要注意的是操作注册表必须符合系统权限,否则将会抛出错误。

创建子键的方法原型为:
public RegistryKey CreateSubKey(string sunbkey);
参数sunbkey表示要创建的子键的名称或路径名。创建成功返回被创建的子键,否则返回null。
打开子键的方法原型为:
public RegistryKey OpenSubKey(string name);
public RegistryKey OpenSubKey(string name,bool writable);
参数name表示要打开的子键名或其路径名,参数writable表示被打开的子键是否允许被修改,第一个方法打开的子键是只读的。
删除子键的方法原型为:
public void DeleteSubKey(string subkey);
该方法用于删除指定的主键。如果要删除的子键还包含主键则删除失败,并返回一个异常,如果要彻底删除该子键极其目录下的子键可以用方法DeleteSubKeyTree,该方法原型如下:
public void DeleteSunKeyTree(string subkey);
读取键值的方法原型如下:
public object GetValue(string name);
public object GetValue(string name,object defaultValue);
参数name表示键的名称,返回类型是一个object类型,如果指定的键不存在则返回null。如果失败又不希望返回的值是null则可以指定参数defaultValue,指定了参数则在读取失败的情况下返回该参数指定的值。
设置键值的方法原型如下:
public object SetValue(string name,object value);
删除键值的方法原型如下:
public void DeleteValue(string name);
下面是本人自己写的测试小例,运行没有错误。
1. 写入

复制代码 代码如下:

try
    {
       RegistryKey rsg = null;
       if (Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING").SubKeyCount <= 0)
       {
          Registry.LocalMachine.DeleteSubKey("SOFTWARE\\RING");
          Registry.LocalMachine.CreateSubKey("SOFTWARE\\RING");
       }
       rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING",true);//true表示可以修改
       //if (rsg.GetValue("TestReg") == null)
       //{
       //    rsg.CreateSubKey("TestReg");
       //}
       //else
       //{
       //    rsg.DeleteSubKey("TestReg");              
       //}
       rsg.SetValue("TestReg", System.DateTime.Now.ToString());
       rsg.Close();
       }
  catch (Exception ex)
      {
         this.label2.Text = ex.Message;
      }

2. 读取

复制代码 代码如下:

try
    {
       RegistryKey rsg = null;
       rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING",true);
       if (rsg.GetValue("TestReg") != null) //读取失败返回null
       {
          this.label2.Text = rsg.GetValue("TestReg").ToString();
       }
       else
          this.label2.Text = "该键不存在!";
       rsg.Close();
    }
 catch (Exception ex)
    {
       this.label2.Text = ex.Message;
    }

更多精彩内容其他人还在看

服务器端C#实现的CSS解析器

服务器端C#实现的CSS解析器
收藏 0 赞 0 分享

c#一个定时重启的小程序实现代码第1/2页

今天有个朋友找我问有没有一些能像Windows一样计划任务重启的软件,我也不清楚。他它说能让我做一个给他它么?我考虑了一下,他的服务器都是有安装.NET框架的,那可以用.NET来使下~~!
收藏 0 赞 0 分享

C# 位运算符整理

在C#中可以对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。
收藏 0 赞 0 分享

整理C# 二进制,十进制,十六进制 互转

c#下进制互转代码
收藏 0 赞 0 分享

c# 抓取Web网页数据分析

通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。
收藏 0 赞 0 分享

C# WinForm窗口最小化到系统托盘

C#编写最小化时隐藏为任务栏图标的 Window appllication.
收藏 0 赞 0 分享

C# Split分隔字符串的应用(C#、split、分隔、字符串)

C# Split分隔字符串主要包括用字符串分隔,用多个字符来分隔,用单个字符来分隔等方法实现,下面的具体的实现代码
收藏 0 赞 0 分享

C# 批处理调用方法

当批处理和aspx不在同一目录中时,最好用WorkingDirectory设置启动的进程的初始目录为批处理所在目录,否则如上例中批处理新建的目录就应在aspx所在目录中而不是批处理所在目录了!
收藏 0 赞 0 分享

c# JSON返回格式的WEB SERVICE

首先用c#创建一个web service,主要是利用其WSDL的功能,当然也可以利用php创建一个,道理都是一样的
收藏 0 赞 0 分享

C# 游戏外挂实现核心代码

最近打算学习下游戏外挂,因为c#语言,感觉比较顺,高手用delphi的多,不知道哪个最好。
收藏 0 赞 0 分享
查看更多