C#--注册表编辑

要操作注册表首先要引用命名空间 using Microsoft.Win32;

C#中操作注册表提供了两个类,它们是Registry类和RegistryKey类。Registry类主是是提供静态方法对项的访问,RegistryKey类提供实例方法对具体项和值进行读写,经典的做法是通过Registry类的静态方法返回一个项对象,然后用RegistryKey类的方法读写这个项对象里面的数据。

Registry里面的静态方法:

ClassesRoot 提供注册表基本项HKEY_CLASSES_ROOT的访问能力

CurrentConfig 提供注册表基本项HKEY_CURRENT_CONFIG的访问能力

CurrentUser 提供注册表基本项HKEY_CURRENT_USER的访问能力

Users 提供注册表基本项HKEY_USERS的访问能力

LocalMachine 提供注册表基本项HKEY_LOCAL_MACHINE的访问能力

DynData 提供注册表基本项HKEY_DYN_DATA的访问能力,该项在XP系统注册表中被隐藏,所有系统中的动态信息都是存放在此子项中

PerformanceData 提供注册表基本项HKEY_PERFORMANCE_DATA的访问能力,该项在XP系统注册表中被隐藏,包含了系统运行中的动态数据——即己发生的事件的有关信息

Registry类里面的这些静态方属性提供对注册表基项的访问能力,这些属性返回的都是RegistryKey类型的对象,比如:

例:

RegistryKey rk=Registry.ClassesRoot;

RegistryKey类(这个类对读写注册表起关键作用)

属性:

Name 该项的名称

SubKeyCount 该项子项的个数

ValueCount 该项值的个数

方法:

OpenSubKey 得到指定的子项

CreateSubKey 建立指定的子项

DeleteSubKey 删除指定的子项

Close 关闭该项,如果该项的内容已经修改,则该项保存到磁盘里

GetSubKeyName 返回包含所有子项名称的字符串数组

GetValue 得到与值名称关联的数据

SetValue 根据值的名称设置其数据

DeleteValue 删除指定的值

静态方法例:

//使用静态方法打开注册表,参数为True表示打开后,可以进行写入

Registry.CurrentUser.OpenSubKey("Software\\Microsoft",True);

Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\MyKey");

Registry.CurrentUser.DeleteSubKey("Software\\Microsoft\\MyKey");

实例方法例:

//通过静态方法Registry.CurrentUser.OpenSubKey得到打开注册表的实例rk 因为静态方法的参数是True所以rk是一个可以进行注册表写入的实例

RegistryKey rk =Registry.CurrentUser.OpenSubKey("Software\\Microsoft",True);

//使用rk对象进行注册表的写入

rk.SetValue("姓名","大彪");

//使用rk对象进行注册表的写入

rk.SetValue("年龄","27");

//rk对象使用GetValue()方法,得到数据,并送给字符串对象s

String s=rk.GetValue("年龄");

//rk对象根据注册表的值“年龄”对注册表进行删除操作

rk.DeleteValue("年龄");

例:(使用ListBox显示开机启动的注册表信息)下列代码放入Button点击事件中

//先清空Listbox1表中的所有元素
this.listBox1.Items.Clear();
//使用静态方法Registry方法得到rk实例化对象,静态方法中的参数是false所以rk对象只可以进行读操作,不可写
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", false))
{
//字符串valueName使用rk对象的GetValueName方法得到所有注册表项值的名称
string[] valueName = rk.GetValueNames();
//遍历字符串
foreach (string it in valueName)
{
//向listbox1中添加字符串的名称和数据,数据是从rk对象中的GetValue(it)方法中得来的
this.listBox1.Items.Add(it+" "+rk.GetValue(it));
}
//关闭rk对象,停止操作注册表
rk.Close();

posted on 2011-08-26 14:06  温文粥  阅读(618)  评论(0编辑  收藏  举报

导航