技术开发 频道

Vsiaul C#如何读取注册信息


【IT168技术文档】

  从视窗95开始,微软公司就在视窗系统中引入了注册表这个概念。注册表到底是什么东东呢?它是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动、硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等。这就意味着,如果注册表因为某些原因受到了破坏,轻者是视窗系统启动过程出现异常,重者就有可能导致整个系统的完全瘫痪。所以正确的认识注册表,及时的备份注册表,对于视窗用户就显得相当重要。
Vsiaul C#就可以十分方便、简洁的开发出操作注册表的程序。本文就是介绍如何利用VisualC#来读取注册表中的信息。

  一.初步认识注册表:
  单击"开始/运行",在"打开"的后面填入"regedit"。就可以看到注册表的数据结构了。如下图。注:Regedit文件是微软公司提供给用户编辑注册表的一个工具。

  点击小图放大,图01:注册表结构图示

  如上图左边的部分在注册表中称为"主键",据图可见,"主键"是有层次结构的。主键的下一级主键称为该主键的"子键"。每一个主键可以对拥有多个子键。如图所示,右边的这些值就是所谓的键值了。每一个主键或者子键都可以拥有多个键值。注册表是一个庞大的数据库,在其中每一个主键,每一个键值都赋予了不同的功能。

  二.Visual C#如何读取注册表中的主键和键值:
  在.Net FrameWork SDK Beta 2版中,有一个Microsoft.Win32的名称空间,在此名称空间中提供了二个用于注册表操作的类:Registry类、RegistryKey 类。这二个类都是封闭类,不可以继承。在这二个类,定义了许多关于注册表的方法和属性,通过调用这二个类,在Visual C#中就可以比较轻松的处理关于注册表的各种操作了。
  (1).Registry类:
  此类主要封装了七个公有的静态域,而这些静态域分别代表这视窗注册表中的七个基本的主键,具体如下所示:
  Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键
  Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
  Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
  Registry.User 对应于 HKEY_USER主键
  Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
  Registry.DynDa 对应于HKEY_DYN_DATA主键
  Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
  (2).RegistryKey类:
  此类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的基本主键,然后通过RegistryKey类,来找其下面的子键和处理具体的操作的。

  三.通过一个读取注册表信息例子来具体说明这二个来的用法:

  (1).程序设计和运行的环境:
  I视窗系统2000服务器版

  II Net FrameWork SDK Beta 2版
  (2)在运行程序前的一些必要的处理工作:
在程序设计时,主要功能是读取已经存在的主键键值,用户可以按照下图所示的结构新建若干个主键和对应的键值:

  点击小图放大,图02:程序设计中要读取的注册表的信息

  这里有必要说明的是上图只显示了"新项 #3"子键对应的键值。在"新项 #2"子键也有键值,对应的键值是:"新值#1"为"001","新值 #2"为"002"。在"新项 #1"子键中对应的键值是:"新值 #1"为"aaa","新值 #2"为"bbb"。
  (3).程序的主要功能:
  程序的主要功能是读取指定主键下面的所有子键和子键拥有的键值,并以列表的形式按层次显示出来,下图是本程序运行后界面:

  点击小图放大,图03:读取注册表信息并以列表形式显示出来

  (4).程序设计过程中的重要步骤以及应该注意的一些问题:

  I 程序中读取主键、子键和键值所使用到的方法:
  程序中为了读取指定主键下面的子键和子键中拥有的键值,主要使用了RegistryKey类中的四个方法:OpenSubKey,  GetSubKeyNames,GetValueNames,GetValue。具体的用法和意思如下:
  OpenSubKey ( string name )方法主要是打开指定的子键。
  GetSubKeyNames ( )方法是获得主键下面的所有子键的名称,它的返回值是一个字符串数组。
  GetValueNames ( )方法是获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。
  GetValue ( string name )方法是指定键的键值。
  程序中具体的使用语句如下:
RegistryKey hklm = Registry.LocalMachine ; //打开"SYSTEM"子键 RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ; //打开"001"子键 RegistryKey no1 = software.OpenSubKey ( "001" ) ; //打开"002"子键 RegistryKey no2 = no1.OpenSubKey ( "002" ) ;
0
相关文章