• c#中对注册表的操作_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);

    http://www.cnblogs.com/sutar/archive/2006/10/06/522187.html

  • 相关阅读:
    MySql面试题、知识汇总、牛客网SQL专题练习
    产生过拟合的原因
    《人类简史》这本烧脑书风靡全球的秘密是什么?
    厌食?暴食?试试这个 VR 新疗法
    协程、异步IO
    进程池
    进程(同步)锁
    特朗普变脸:同媒体“友好会谈”,怨媒体“死不悔改”
    多进程Queue
    redis 在 php 中的应用(事务 [ Transaction ] 篇)
  • 原文地址:https://www.cnblogs.com/chinatefl/p/1441974.html
Copyright © 2020-2023  润新知