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();