注册表是Windows系统中很重要的一部分,很多应用程序都将其配置信息存储在注册表中。其本质也可以当做一个小型的数据库。但其数据结构还是树。当然应用程序也可以将其配置信息单独存储在安装目录下。这不是本文讨论的内容。
其实,.NET中为开发者操纵数据库提供了很方便的接口。
关于注册表的概念:
主键:主键可以想象成树根,所有的子键都挂在主键上。也只有通过主键才能够访问到键值。其作用类似文件系统中的盘符。
子键:子键可以想象成树枝,主键跟键值之间部分都相当于子键。子键主要作用是组织和衔接主键与键值。其作用类似文件系统中的目录。
键值:键值可以想象成树叶。这些叶子节点都是一些名值对,可以按名存取,有点类似map容器的功能。
键值类型:
REG_SZ : 字符串
REG_BINARY :二进制
REG_DWORD :双字(32bit)
REG_QWORD :四字(64bit)
上面列举的是比较常用的键值类型。还有其他的类型,这里不做介绍。
.NET中在
Microsoft.Win32名字空间下定义了两个类
Registry,
RegistryKey,所有对注册表的操作都可以通过这两个类来完成。这两个类都是不可继承的。
Registry是不能实例化的类,其作用仅用于枚举提供表示主键的RegistryKey实例。
RegistryKey实例表示一个注册表项,该类中封装的方法可以创建,查看,修改删除键值。所有对注册表的操作都将通过此类来完成。
注册表编程模式:
创建键值:
RegistryKey key=Registry.LocalMachine;
RegistryKey subkey=key.OpenSubKey("SOFTWARE",true);
RegistryKey keyvalue=subkey.CreateSubKey("subkeyname");
keyvalue.SetValue("ValueName","Value");
查看键值:
RegistryKey key=Registry.LocalMachine.OpenSubKey("SOFTWART\\SubKeyName",false);//该函数的第二个参数指定能否修改注册表。
string keyvalue=key.GetValue("keyname").ToString());
至于
修改和
删除可以用RegistryKey类的SetValue(string valuename)和DeleteValue(string valuename)来完成,这里不再赘述。