BLUE.NET

-------- 众里寻她千百度

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

 

要操作注册表首先要引用命名空间 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 2009-03-13 13:26  blue.net  阅读(1329)  评论(1)    收藏  举报