前言
Windows注册表包含了Windows安装、用户自定义设置、已安装软件和硬件设备的所有配置信息,它相当于一个大型的系统配置信息“仓库”,这样通过读取注册表就可以获取很多重要信息。
本次例程主要实现获取注册表HKEY_CURRENT_CONFIG基项的子项。
查询
关键技术
本次例程为读取系统中注册表的信息。
实现中主要用到了Registry类的CurrentConfig字段、RegistryKey类的GetSubKeyNames方法及注册表的HKEY_CURRENT_CONFIG基项,下面对其进行详细讲解。
(1)Registry类的CurrentConfig字段
该字段用于读取Windows注册表基项HKEY_CURRENT_CONFIG,其语法格式如下:
public static readonly RegistryKey CurrentConfig
参数说明
字段值:该字段值是RegistryKey类的实例,它包含有关非用户特定的硬件的配置信息。
说明:由于Registry类是静态类,所以不需要创建实例就直接使用该类来调用CurrentConfig字段。
(2)RegistryKey类的GetSubKeyNames方法
该方法获取指定项包含的所有子项的名称,其语法格式如下:
public string[] GetSubKeyNames()
参数说明
返回值:该方法返回一个字符数组,该数组由指定包含的所有子项的名称组成
(3)注册表的HKEY_CURRENT_CONFIG基项
该基项用于存放计算机当前的硬件配置信息。
using Microsoft.Win32; //该处引用必须添加
RegistryKey rkConfig = Registry.CurrentConfig;
foreach (string si in rkConfig.GetSubKeyNames())
{
System.Console.WriteLine(si);
}
写入
Windowns注册表支持向其写入信息的功能,这样就可以向注册表中写入一些比较重要的信息,如软件的注册码信息等。
本实例主要通过在HKEY_LOCAL_MACHINE\HARDWARE子项下添加一个ZHD新子项,并创建该子项的一个键值对。
关键技术
本实例实现时主要用到了Registry类的LocalMachine字段和RegistryKey类的OpenSubKey方法、CreateSubKey方法和SetValue方法,以下是详细讲解:
(1)Registry类的LocalMachine字段
该字段用于读取Windowns注册表基项HKEY_LOCAL_MACHINE,其语法格式如下:
public static readonly RegistryKey LocalMachine
参数说明
字段值:
该字段值是RegistryKey类的实例,它包含本地计算机的配置数据。
(2)RegistryKey类的OpenSubKey方法
该方法用于检索指定的子项,该方法的重载形式很多种,本实例用到的格式如下:
public RegistryKey OpenSubKey(string name, bool writable)
参数说明:
name:要打开的子项的名称或者路径
writable:如果需要的子项的写访问权限,则设置为true。
返回值:请求的子项;如果操作失败,则为NULL。
(3)RegistryKey类的CreateSubKey方法
该方法实现创建一个新子项或打开一个现有子项以进行写访问,该方法的重载形式有很多种,本实例用到的语法样式如下:
public RegistryKey CreateSubKey(string subkey)
参数说明
subkey;要创建或打开的子项的名称或路径
返回值:RegistryKey类的对象,表示新建的子项或NULL(如果操作失败)。
RegistryKey类的SetValue方法
该方法实现设置指定的键/值对,该方法的重载形式有很多种,本实例用到的格式如下:
public void SetValue(string name, object value)
参数说明
name:要存储的键名称
value:要存储的值
注意:在使用SetValue方法时,如果它检测到指定的键名称不存在,就会创建一个新的键/值对;若已经存在指定的键名称,则修改对应的键值。