C#操作注册表的类(20100709)

来源:互联网 发布:阿里指数能看淘宝吗 编辑:程序博客网 时间:2024/05/22 03:19

1-注册表的结构


  • HKEY_CLASSES_ROOT 该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息。该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHINESOFTWAREClasses映射过来的。
  • HKEY_CURRENT_USER 该主键包含了如用户窗口信息,桌面设置等当前用户的信息。
  • HKEY_LOCAL_MACHINE 主键包含了计算机软件和硬件的安装和配置信息,该信息可供所有用户使用
  • HKEY_USERS 该主键记录了当前用户的设置信息,每次用户登入系统时,就会在该主键下生成一个与用户登入名一样的子键,该子键保存了当前用户的桌面设置、背景位图、快捷键,字体等信息。一般应用程序不直接访问改主键,而是通过主键HKEY_CURRENT_USER进行访问。
  • HKEY_CURRENT_CONFIG 该主键保存了计算机当前硬件的配置信息,这些配置可以根据当前所连接的网络类型或硬件驱动软件安装的改变而改变。

2-.NET中关于注册表的操作

C#也支持对注册表的编辑,.NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey。这两个类都是密封类不允许被继承。下面我们分别来介绍这两个类。 Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有,在这就不介绍了)分别是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它们分别对应哪几个键我想各位一看就会知道吧。 RegistryKey类中提供了对注册表操作的方法。要注意的是操作注册表必须符合系统权限,否则将会抛出错误。

例1:读取HKEY_CLASSES_ROOT中的所有子键并写入文件
              RegistryKey rk = Registry.ClassesRoot;            string[] subKey = rk.GetSubKeyNames();            string path = @"D:/reg.txt";            FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);            StreamWriter sw = new StreamWriter(fs);            foreach (string str in subKey)            {                sw.WriteLine(str);                sw.Flush();            }            sw.Close();            Console.Read();