第5章 函数、资源与注册表
第四节 注册表
1.注册表Reigstry的层次结构
注册表Reigstry的层次结构类似于硬盘中的目录树,我们可参见图1.2。
|
┌──────┐ │ 注册表 │ │ Registry │ └──┬───┘ │ │ ┌────┐ ├─┤ 根键 │ │ └─┬──┘ │ ┌────┐ ├──┤ 子键 │ │ └─┬──┘ │ ┌────┐ ├──┤ 子键 │ │ └─┬──┘ │ ┌───┐ ├─┤键值项│ │ └───┘ |
图1.2
表1.1是对图1.2中的Registry层次结构的解释。
表1.1 图1.2中的Registry层次结构的解释
|
层次 |
说 明 |
|
根键 |
根键类似于硬盘上的根目录。 Registry有四个预定义的根键:
1、HKEY_LOCAL_MACHINE
2、HKEY_USERS
3、HKEY_CURRENT_USER
4、HKEY_CLASSES_ROOT |
|
键与子键 |
键和子键类似于文件管理器中看到的目录结构,在键下面是子键,就象目录可以包含子目录一样 |
|
键值项 |
键值项类似硬盘上树型目录的末端文件,键和子键可以包括一个或多个键值项。键值项由键值名、数据类型和键值三部分组成,其格式为:“键值名:数据类型:键值”。 |
|
键值类型 |
Registry中有如下三种键值类型:
- DWORD值:只允许一个键值,并且必须为1-8个16进制数据(即双字)。
- 字符串值:只允许一个键值,并且作为要存储的字符串来解释。
二进制值:只允许一个值,是16进制数字串,每对作为一个字节值解释。 |
六大根键的作用
在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关的。如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个“+”就会变成“-”。
1、HKEY_USERS
该根键保存了存放在本地计算机口令列表中的用户标识和密码列表。每个用户的预配置信息都存储在 HKEY_USERS 根键中。 HKEY_USERS 是远程计算机中访问的根键之一。
2、HKEY_CURRENT_USER 该根键包含本地工作站中存放的当前登录的用户信息 ,包括用户登录用户名和暂存的密码 ( 注:此密码在输入时是隐藏的 ) 。用户登录 Windows 98 时,其信息从 HKEY_USERS 中相应的项拷贝到 HKEY_CURRENT_USER 中。
3、HKEY_CURRENT_CONFIG 该根键存放着定义当前用户桌面配置 ( 如显示器等 ) 的数据 , 最后使用的文档列表( MRU )和其他有关当前用户的 Windows 98 中文版的安装的信息。
4、HKEY_CLASSES_ROOT 包含注册的所有ole信息和文档类型,是从 hkey_local_machine\software\classes复制的。根据在 Windows 98 中文版中安装的应用程序的扩展名 , 该根键指明其文件类型的名称 。
5、HKEY_LOCAL_MACHINE 该根键存放本地计算机硬件数据 , 此根键下的子关键字包括在 SYSTEM。DAT 中 ,用来提供 HKEY_LOCAL_MACHINE 所需的信息 ,或者在远程计算机中可访问的一组键中。该根键中的许多子键与 System。ini 文件中设置项类似。
6、KEY_DYN_DATA 该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中
2.Registry与INI文件之间的关系
Registry与Windows 98中的INI文件有许多相似之处。键或子键类似于INI文件中的小节,一个键值项对应于INI文件中小节里的一条设置项。然而,Registry可以包括子键,而INI文件不支持小节的嵌套。
Registry中的键值项还可以包含可执行代码,而在INI文件中设置项只是简单的字串。
在同一台计算机上有多个用户,Registry可以存储每个用户的特性,而INI文件中却不可能。
如果您在Windows 3.x上升级为Windows 98,则安装程序会从System.ini和Win.ini文件文件中选择一些延续信息放入到注册表中。不过,为了与以前的Windows版本上的老式16位应用程序保持兼容,INI文件中的有些设置项不能迁移到Windows 98的注册表中。有关Win.ini、System.ini文件的结构与设置项信息详见附录A。
1.注册表中Win.ini信息
表1.2列出了Windows 98在升级安装过程中,从Win.ini文件中移出的部分设置项,以及在注册表中的位置。所有的子键都处于注册表的HKEY_CURRENT_USER根键中。
表1.2 注册表中Win.ini信息
|
小节 |
设置项 |
HKEY_CURRENT_USER中的子键分支 |
|
[desktop] |
GridGranularity |
Control Panel\desktop |
|
Pattern |
Control Panel\desktop |
|
TileWallPaper |
Control Panel\desktop |
|
[windows] |
ScreenSaveActive |
Control Panel\desktop |
|
ScreenSaveTimeOut |
Control Panel\desktop |
|
[Sounds] |
Sound Event Name |
AppEvents\Schemes\Apps\.Default\Sound Event Name\.current |
|
[Hearts] |
Name |
Software\Microsoft\Windows\CurrentVersion\Applets\Hearts |
2.注册表中的System.ini信息
表1.3列出了Windows 98在升级安装过程中从System.ini文件中移出的设置项,以及在注册表中的位置,这些子键都处于注册表的HKEY_LOCAL_MACHINE根键中。根据机器的网络配置,有些系统可能不会出现某些子键。
表1.3 注册表中的System.ini信息
|
小节 |
设置项 |
HKEY_LOCAL_MACHINE内的子键分支 |
|
[Network] |
Comment |
System\CurrentControlSet\Services\VxD\VNETUP |
|
ComputerName |
System\CurrentControlSet\Control\ComputerName\ComputerName |
|
EnableSharing |
没有子键入口 |
|
LMAnnounce |
System\CurrentControlSet\Services\VxD\VNETUP |
|
LogonDomain |
没有子键入口 |
|
Logon Validated |
没有子键入口 |
|
MaintainServerList |
System\CurrentControlSet\Control\ComputerName\ComputerName |
|
Reconnect
Reshare |
没有子键入口 |
|
没有子键入口 |
|
Username |
Network\Logon |
|
Workgroup |
System\CurrentControlSet\Control\ComputerName\ComputerName |
|
[386Enh] |
Network |
没有子键入口 |
|
Transport |
Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net |
1 2 3 4 下一页