并返回一个异常

时间:2021-11-27 02:35:23

C#中对注册表的操纵

Windows 操纵系统的注册表包罗了很多有关计算机运行的配置方法,打开注册表我们可以看到注册表是按类似于目录的树布局组织的,此中第二级目录包罗了五个预界说主键分袂是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。

下面我们来分袂解释这5个类的感化

  HKEY_CLASSES_ROOT该主键包罗了文件的扩展名和应用措施的关联信息以及Window Shell和OLE用于储存注册表的信息。该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射过来的。
HKEY_CURRENT_USER该主键包罗了如用户窗口信息,桌面设置等当前用户的信息。

HKEY_LOCAL_MACHINE主键包罗了计算机软件和硬件的安置和配置信息,该信息可供所有用户使用
  HKEY_USERS该主键记录了当前用户的设置信息,每次用户登入系统时,就会在该主键下生成一个与用户登入名一样的子键,该子键生存了当前用户的桌面设置、配景位图、快捷键,,字体等信息。一般应用措施不直接访谒改主键,而是通过主键HKEY_CURRENT_USER进行访谒。

  HKEY_CURRENT_CONFIG该主键生存了计算机当前硬件的配置信息,这些配置可以按照当前所连接的网络类型或硬件驱动软件安置的转变而转变。

  C#也撑持对注册表的编纂,.NET框架在Microsoft.Win32名字空间*给了两个类来操纵注册表:Registry和RegistryKey。这两个类都是密封类不允许被担任。下面我们分袂来介绍这两个类。

  Registry类供给了7个大众的静态域,分袂代表7个根基主键(此中两个在XP系统中没有,在这就不介绍了)分袂是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它们分袂对应哪几个键我想列位一看就会知道吧。

  RegistryKey类*给了对注册表操纵的要领。要注意的是操纵注册表必需切合系统权限,否则将会抛堕落误。

  下面我们就来几个操纵注册表常用的几个要领

  创建子键的要领原型为:


  public RegistryKey CreateSubKey(string sunbkey);


  参数sunbkey暗示要创建的子键的名称或路径名。创建告成返回被创建的子键,否则返回null。

  打开子键的要领原型为:


  public RegistryKey OpenSubKey(string name);
  public RegistryKey OpenSubKey(string name,bool writable);

  参数name暗示要打开的子键名或其路径名,参数writable暗示被打开的子键是否允许被改削,第一个要领打开的子键是只读的。Microsoft.Win32类还为我们供给了另一个要领,用于打开长途计算机上的注册表,要领原型为:


  public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey,string machineName);

  删除子键的要领原型为:


  public void DeleteKey(string subkey);

  该要领用于删除指定的主键。如果要删除的子键还包罗主键则删除掉败,并返回一个异常,如果要彻底删除该子键极其目录下的子键可以用要领DeleteSubKeyTree,该要领原型如下:


  public void DeleteKeyTree(string subkey);

  读取键值的要领原型如下:


  public object GetValue(string name);
  public object GetValue(string name,object defaultValue);

  参数name暗示键的名称,返回类型是一个object类型,如果指定的键不存在则返回null。如果掉败又不但愿返回的值是null则可以指定参数defaultValue,指定了参数则在读取掉败的情况下返回该参数指定的值。

  设置键值的要领原型如下:


  public object SetValue(string name,object value);