从零讲起 彻底走出注册表应用的迷雾( 三 )


②主键(Main Key)是指根键下面于根键最近的键,主键通常包括一个或多个子键或键值,如图中HKEY_LOCAL_MACHINE包括5个主键 。
③子键(Sub Key)的位置是相对的,并不固定 。某个键下面包含的另一个键则称它为前者的子键 。但主键则不能称为根键的子键,这种以相对位置关系来命名的方式不能用于根键和主键 。
④键值项(Value entry)是指显示在“注册表编辑器”右侧的项目,每个键值项包括名称,类型和数据三部分 。键值项的名称可以由任意字符,数字,代表符和空格组成,但不能使用反斜杠 。不同键值,主键和子键的键值项可以同名,但同一键中的键值项不能同名 。键值项所定义的内容即为该键值项的值(即“键值”),其中最多能存放64KB的数据 。值的数据类型可以是字符串,二进制值,DWord(双字节)值等 。
小提示:上面的描述方法较为规范,平时我们还习惯将“子键”称为“分支”,而将“键值项”简称为“项”,这些称谓没有本质区别,只是叫法习惯不同罢了 。
2.真正的根键只有两个
Windows 98的注册表有6个键值,而Windows 2000/XP/2003系统的根键数则是5个,但这些根键中只有HKEY_LOCAL_MACHINE和HKEY_USERS是真正的注册表键,其它几个键值都是从这两个根键的某个分支映射出来的,相对于这两个根键深层分支的一个快捷方式或者别名,主要是为了方便用户操作 。
⑴HKEY_LOCAL_MACHINE
这个根键存储的是安装在当前计算机上的硬件和软件配置信息,比如硬件设备的驱动程序,特定软件设置和Windows系统安装配置等数据 。这些信息对当前系统中的所有用户均保持一致 。这个根键下面还有5个重要的主键,其中Software和System最为关键,平时对系统进行相关调整大多集中在这两个键上 。
①Software子键:保存于这台电脑中安装的应用程序和相关的设置,许多应用程序都使用该键值保存特定设置 。关于Windows的许多设置都存在于HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion中 。
②System子键:在这里精确的确定了Windows所装载的设备驱动程序和服务,以及当Windows启动时所使用的各种参数(如在网络上的计算机名称和当前硬件配置恩见) 。
⑵HKEY_USERS
HKEY_USERS包含有电脑特定用户的配置数据,Windows在此根键下的一个子键中为登陆该电脑的每个用户存储配置数据 。如果电脑只有一个用户使用,那么所看到的就是单独一个子键,称为“.DEFAULT”
而HKEY_USERSS-1-5-21-1078081533-1202660629-1343024091-500(不同的电脑不一样)则是当前登陆用户的配置数据,其中S-1-5-21-1078081533-1202660629-1343024091-500就是这个目前登陆用户的SID,每一个网络上的用户都被域用户管理器分配了一个SID,每个SID是唯一的,所以它依赖于登陆用户,其分支数据是从用户配置文件的Ntuser.dat文件调出的 。
3.改头换面我也认识你
前文提到只有HKEY_LOCAL_MacHINE和HKEY_USERS是才真正的注册表键 。也就是说如果更改了其它别名分支中的某个键或键值,那么在HKEY_LOCAL_MACHINE和HKEY_USERS也会做出相应更改,通常我们还可将它们称为“别名”,下面是这些别名的实际位置:
①HKEY_CLASSES_ROOT--HKEY_LOCAL_MACHINESOFTWAREClasses的别名 。包含有文件类型和程序之间的关联 。
②HKEY_CURRENT_USER--HKEY_USERS一个分支别名,该分支包含有当前登陆用户的配置数据,如果是单一用户HKEY_CURRENT_USER则指向HKEY_USERS.DEFAULT
③HKEY_CURRENT_CONFIG
--HKEY_LOCAL_MACHINESYSTEMControlSet001Hardware ProfilesCurrent的别名,其中ControlSet001还有可能是ControlSet000,ControlSet002等,它包含当前的硬件配置 。
附表1 HKEY_USERS部分重要分支说明

推荐阅读