欢迎访问个人小站,阅读此文http://www.yandong.org/archives/386
大致认识
对注册表的大致认识,除了使用百度,google搜索出来之外,推荐阅读这片文章The Windows NT∗ Registry File Format Version 0.4 。尝试对其翻译,比较烂,察看此处(有兴趣且英文好的朋友可以翻译一份,大家共享)。
注册表结构的认识
注册表(Registry,中国大陆译作注册表,台湾、港澳译作登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Windows 95开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。
注册表由键(或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文档夹,而子键就是这个文档夹中的子文档夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
注册表的修改
1.windows开机状态下,命令行输入regedit,进行修改
2.windows开机状态下,使用.reg文件直接导入,或者使用批处理,或者使用编程语言调用win API,或者一些开发者的图形化工具。这些方式其实都类似,背后都是调用windows的API。
3.分析注册表的存储原理,自己编程处理。目前现在有开源的工具和库可以使用。察看此文。
注册表的存储
注册表的存储位置随着Windows的版本变化而不同。尤其是Windows NT家族操作系统和Windows 95家族的存储方式有很大区别。注册表被分成多个文档存储,每一个文档被称为一个配置单元。本文主要是针对windows NT和winxp以后版本。
在早期的Windows 3.x系列中,注册表仅包含一个reg.dat文档,所存放的内容后来演变为HKEY_CLASSES_ROOT分支。
Windows NT家族的配置单元文档:
名称 | 注册表分支 | 作用 |
---|---|---|
SYSTEM | HKEY_LOCAL_MACHINE\SYSTEM | 存储计算机硬件和系统的信息 |
NTUSER.DAT | HKEY_CURRENT_USER | 存储用户参数选择的信息(此文档放置于用户个人目录,和其他注册表文档是分开的) |
SAM | HKEY_LOCAL_MACHINE\SAM | 用户及密码的数据库 |
SECURITY | HKEY_LOCAL_MACHINE\SECURITY | 安全性设置信息 |
SOFTWARE | HKEY_LOCAL_MACHINE\SOFTWARE | 安装的软件信息 |
DEFAULT | HKEY_USERS\DEFAULT | 缺省启动用户的信息 |
USERDIFF | HKEY_USERS | 管理员对用户强行进行的设置 |
注册表的文件类型
none | A complete copy of the hive data. |
.alt | A backup copy of the critical HKEY_LOCAL_MACHINE\System hive. Only the System key has an .alt file. |
.log | A transaction log of changes to the keys and value entries in the hive. |
.sav | A backup copy of a hive. |
注册表文件的存放位置
其存放在“\系统文件夹\SYSTEM32\CONFIG”目录下的6个文件,DEFAULT、SAM、SECURITY、SOFTWARE、USERDIFF和SYSTEM中,而用户的配置信息存放在系统所在磁盘的“\Documents and Setting\”目录,包括ntuser.dat,ntuser.ini和ntuser.dat.log。其中每个文件的路径都由注册表项“HKLM\SYSTEM\CurrentControlSet\Control\HIVElist”下的键值指出。
注册表Hive对应的文件
Registry hive | Supporting files |
---|---|
HKEY_CURRENT_CONFIG | System, System.alt, System.log, System.sav |
HKEY_CURRENT_USER | Ntuser.dat, Ntuser.dat.log |
HKEY_LOCAL_MACHINE\SAM | Sam, Sam.log, Sam.sav |
HKEY_LOCAL_MACHINE\Security | Security, Security.log, Security.sav |
HKEY_LOCAL_MACHINE\Software | Software, Software.log, Software.sav |
HKEY_LOCAL_MACHINE\System | System, System.alt, System.log, System.sav |
HKEY_USERS\.DEFAULT | Default, Default.log, Default.sav |
注册表的根键介绍
注册表的键值可以随意增删查改,但是windows预制了几个键。其中有一类比较特殊,是根键,这些根键都是虚拟键,意思就是在Hive文件中不存在的。
Handle | Description |
---|---|
*HKEY_CLASSES_ROOT | 文件扩展名与应用的关联及OLE信息,他的信息来自于 HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER。 |
*HKEY_CURRENT_CONFIG | 计算机硬件的当前配置信息,它只是描述硬件的当前配置和标准配置的不同之处。它其实只是HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current的另外一个名字 |
*HKEY_CURRENT_USER | 当前登录用户控制面板选项和桌面等的设置,以及映射的网络驱动器。它和HKEY_USERS中的相关键相对应,如果没有对应,则使用 HKEY_USERS\.Default。 |
*HKEY_LOCAL_MACHINE | 计算机硬件与应用程序信息。 |
*HKEY_USERS | 所有登录用户的信息 |
资料链接
除了阅读相关文章外,本文还参考一下文章
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724836(v=vs.85).aspx
http://technet.microsoft.com/en-us/library/cc787719(v=ws.10)