Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished in(发表于) 2014/7/11 9:28:25 C#教程:读取注册表信息
C#教程:读取注册表信息
读取注册表信息当计算机在安装一个程序时,有很多信息已写入到注册表中。每当用户开启这个程序时,程序便会读取注册表中的信息来完成程序的初始化。例如,在使用一个测试版应用程序时,每次启动都会提示用户还有多少次或还有多长时间到期。这些信息通常从注册表中读取,注册表的读取主要是通过RegistryKey类实现的。下面将主要介绍RegistryKey类及其应用。RegistryKey类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的主键,然后通过RegistryKey类找其下面的子键和处理具体的操作。通过Registry类中的OpenSubKey方法、GetSubKeyNames方法和GetValueNames方法可以读取注册表中的信息。(1)OpenSubKey方法。用于检索指定的子项。语法:public RegistryKey OpenSubKey(string name)参数说明如下。name:以只读方式打开的子项的名称或路径。返回值:请求的子项;如果操作失败,则为空引用。例如,通过OpenSubKey方法打开“HKEY_CURRENT_USERAppEventsEventLabels”子键,代码如下:RegistryKey rk = Registry.CurrentUser;RegistryKey sys = rk.OpenSubKey(@"AppEventsEventLabels");(2)GetSubKeyNames方法。检索包含所有子项名称的字符串数组。语法:public string[] GetSubKeyNames ()返回值:包含当前项的子项名称的字符串数组。例如,通过GetSubKeyNames方法检索“HKEY_CURRENT_USERAppEventsEventLabels”子键下包含的所有子项名称的字符串数组,代码如下;RegistryKey rk = Registry.CurrentUser;RegistryKey sys = rk.OpenSubKey(@"AppEventsEventLabels");foreach(string str in sys.GetSubKeyNames()){this.listBox1.Items.Add("子键名:" + str);}(3)GetValueNames方法。检索包含与此项关联的所有值名称的字符串数组。语法:public string[] GetValueNames ()返回值:包含当前项的值名称的字符串数组。例如,通过GetValueNames方法检索“HKEY_CURRENT_USERAppEventsEventLabels”子键下包含的所有子项,然后检索包含与此子项关联的所有值名称的字符串数组,代码如下:RegistryKey rk = Registry.CurrentUser;RegistryKey sys = rk.OpenSubKey(@"AppEventsEventLabels");foreach(string str in sys.GetSubKeyNames()){RegistryKey sikey = sys.OpenSubKey(str);//打开子键foreach (string sVName in sikey.GetValueNames()){this.listBox1.Items.Add(sVName);}}示例读注册表读取“HKEY_CURRENT_USERAppEventsEventLabels”子键信息,将其添加到listBox控件中,运行效果如图1所示。图1 读取注册表首先通过Registry类实例化一个RegistryKey类对象,然后利用对象的OpenSubKey方法打开指定的键,最后通过循环将所有键值全部提取出来并显示在listBox控件中,程序代码如下:private void ButRead_Click(object sender, EventArgs e){this.listBox1.Items.Clear();RegistryKey rk = Registry.CurrentUser;RegistryKey sys = rk.OpenSubKey(@"AppEventsEventLabels");foreach(string str in sys.GetSubKeyNames()){this.listBox1.Items.Add("子键名:" + str);RegistryKey sikey = sys.OpenSubKey(str);//打开子键foreach (string sVName in sikey.GetValueNames()){this.listBox1.Items.Add( sVName + sikey.GetValue(sVName));}}
赞