在.NET出现前,通过编程访问注册表要应用Windows API(应用程序接口)。.NET Framework通过Microsoft.Win32命名空间简化了这一过程。本文详细说明如何通过.NET操作注册表。
注册表是每个Windows系统的重要组成部分。它包含与操作系统配置,硬件和所安装软件有关的大量信息。在.NET出现前,通过编程访问注册表要应用Windows API(应用程序接口)。.NET Framework通过Microsoft.Win32命名空间简化了这一过程。本文详细说明如何通过.NET操作注册表。
注册表概述
Windows注册表呈树状或层次结构。Windows提供注册表编辑器(regedt32.exe/regedit/exe)对其进行编辑。注册表由包含所有数据的键构成。这些键不能被删除或重命名。下表概括说明了这些键:
- HKEY_CURRENT_USER:保存当前登录用户的配置信息。用户的文件夹、屏幕颜色和控制面板设置都存储在这个键中(也可称作用户基本资料)。它是HKEY_USERS的一个子键。
- HKEY_USERS:这个键中包含计算机上所有用户的基本资料。
- HKEY_LOCAL_MACHINE:这个键包含计算机的配置信息。
- HKEY_CLASSES_ROOT:这个键包含文件关联信息。也就是说,它告诉Windows打开特定类型的文件应使用何种程序。它是HKEY_LOCAL_MACHINESoftware的一个子键。
- HKEY_CURRENT_CONFIG:这个键包含计算机硬件信息。
- HKEY_PERFORMANCE_DATA:在安装软件时,每个软件组件为它的对象和计数器建立键,并在执行时写入计数器数据。这种性能数据存储在这个键中。
这些键能够以各种方式存储数据。在注册表中,共有六个数据类型可用来存储数据。这些数据类型如下表所示:
- REG_BINARY:以一串十六进制数对存储的二进制数据,每个数对的值在0-255之间。REG_BINARY的长度不固定。
- REG_DWORD:它为双字数据类型,由四个字节(32位)的数字组成,其值在0-4GB之间。设备驱动器和服务参数通常为此数据类型。
- REG_EXPAND_SZ:这个可扩充的字符串数据类型实际上是一个变量。在使用时,当字符串被系统调用时,它的值被真正的值代替。
- REG_MULTI_SZ:多个字符串值,不同的值用空格、逗号和其它符号隔开。
- REG_SZ:固定长度的文字字符串值。
- REG_FULL_RESOURCE_DESCRIPTOR:它用于硬件注册表键中。
了解了注册表的基础知识,你就能够利用适当的.NET类来处理注册表的内容。
处理注册表
Microsoft.Win32命名空间为处理注册表提供必要的类。命名空间中的两个主要的类为Registry和RegistryKey。Registry联合RegistryKey一起访问个别的注册表键。它映射到前面列出的主要注册表键。
- Registry.CurrentUser
- Registry.Users
- Registry.LocalMachine
- Registry.ClassesRoot
- Registry.CurrentConfig
- Registry.PerformanceData