Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published 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));

}

}


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759