本帖最后由 lxcnn 于 2009-07-21 21:15:41 编辑

解决方案 »

  1.   

    在MSDN中查对应函数就知道了。
      

  2.   

     Registry 对应注册表
    CurrentUser 对应注册表中的HKEY_CURRENT_USER
    CreateSubKey 是在HKEY_CURRENT_USER下创建子键并返回创建的对象
    SetValue 为是键设置值
      

  3.   

    RegistryKey类在.NET的哪个命名空间中Microsoft.Win32
    注册表项是注册表中的基本组织单位,好比是Windows资源管理器中的文件夹。每个具体的注册表项都可以有子项,就像文件夹下可以有子文件夹一样。只要用户具有相应的权限,且注册表项不是基项或基项的下一级项,就可以删除该注册表项。每个注册表项也可带有与其相关联的多个值(一个值就好比是一个文件),它们用于存储信息,例如,有关计算机上安装的应用程序的信息。每个值存储特定的信息,可按需要对其进行检索或更新。例如,可以为您的公司创建一个RegistryKey(在项HKEY_LOCAL_MACHINE\Software下),然后为您的公司创建的每个应用程序创建一个子项。每个子项保存特定于该应用程序的信息,如颜色设置、屏幕位置和大小或者可识别的文件扩展名。   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);程序中读取主键、子键和键值所使用到的方法:程序中为了读取指定主键下面的子键和子键中拥有的键值,主要使用了RegistryKey类中的四个方法:OpenSubKey,GetSubKeyNames,GetValueNames,GetValue。具体的用法和意思如下:
    OpenSubKey ( string name )方法主要是打开指定的子键。
    GetSubKeyNames ( )方法是获得主键下面的所有子键的名称,它的返回值是一个字符串数组。
    GetValueNames ( )方法是获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。
    GetValue ( string name )方法是指定键的键值。