首页 > 编程开发 > Objective-C编程 >
-
c#读取注册表信息
当计算机在安装一个程序时,有很多信息已写入到注册表中。每当用户开启这个程序时,程序便会读取注册表中的信息来完成程序的初始化。例如,在使用一个测试版应用程序时,每次启动都会提示用户还有多少次或还有多长时间到期。这些信息通常从注册表中读取,注册表的读取主要是通过RegistryKey类实现的。下面将主要介绍这个类及其应用。
RegistryKey类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的主键,然后通过RegistryKey类]找其下面的子键和处理具体的操作。通过Registry类中的OpenSubKey方法、GetSubKeyNames方法和GetValueNames方法可以读取注册表中的信息。
(1)OpenSubKey方法
用于检索指定的子项。语法:PublicRegistryKeyOpenSubKey
(
stringname
)
参数:
name:要以只读方式打开的子项的名称或路径。
返回值:
请求的子项;如果操作失败,则为空引用。
例如,通过OpenSubKey方法打开“HKEY_CURRENT_USERAppEventsEventLabels”子键;
RegistryKeyrk=Registry.CurrentUser;
RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
(2)GetSubKeyNames方法
检索包含所有子项名称的字符串数组。
语法:publicstring[]GetSubKeyNames()
返回值:
包含当前项的子项名称的字符串数组。
例如,通过GetSubKeyNames方法检索“HKEY_CURRENT_USERAppEventsEventLabels”子键下包含的所有子项名称的字符串数组;
RegistryKeyrk=Registry.CurrentUser;
RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
foreach(stringstrinsys.GetSubKeyNames())
{
this.listBox1.Items.Add("子键名:"+str);
}
(3)GetValueNames方法
检索包含与此项关联的所有值名称的字符串数组。
语法:
publicstring[]GetValueNames()
返回值:
包含当前项的值名称的字符串数组。
例如,通过GetValueNames方法检索“HKEY_CURRENT_USERAppEventsEventLabels”子键下包含的所有子项,然后检索包含与此子项关联的所有值名称的字符串数组;
RegistryKeyrk=Registry.CurrentUser;
RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
foreach(stringstrinsys.GetSubKeyNames())
{
RegistryKeysikey=sys.OpenSubKey(str);//打开子键
foreach(stringsVNameinsikey.GetValueNames())
{
this.listBox1.Items.Add(sVName);
}
}
示例 读注册表
读取“HKEY_CURRENT_USERAppEventsEventLabels”子键信息,将其添加到listBox控件中。
首先通过Registry类实例化一个RegistryKey类对象,然后利用对象的OpenSubKey方法打开指定的键。最后通过循环将所有键值全部提取出来并显示在listBox控件中,程序代码如下。privatevoidButRead_Click(objectsender,EventArgse)
{
this.listBox1.Items.Clear();
RegistryKeyrk=Registry.CurrentUser;
RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
foreach(stringstrinsys.GetSubKeyNames())
{
this.listBox1.Items.Add("子键名:"+str);
RegistryKeysikey=sys.OpenSubKey(str);//打开子键
foreach(stringsVNameinsikey.GetValueNames())
{
this.listBox1.Items.Add(sVName+sikey.GetValue(sVName));
}
}
}