扫一扫
关注微信公众号

注册表结构分析
2008-09-04   chinaitlab

  呵呵,进入关键所在了。要想玩转注册表,不弄清楚注册表的结构可不行!下面是摘自各个大虾的对注册表结构的精华论述。

(以下分割符内的内容,摘自《新潮电子》98年第六期 作者:何宗琦 )

HKEY_CLASSES_ROOT

  该主关键字包含了有关的OLE信息,以便在系统工作过程中实现对各种文件和文档信息的访问。具体的内容有已经注册的文件扩展名、文件类型、文件图标等。

HKEY_USERS

  PC用户都可以在这里设置自己的关键字和子关键字。根据当前登录的用户不同,这个关键字又可以指向不同的分支部分。这个分支部分将映射到HKEY_CURRENT_USER关键字中。用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体、屏幕节电设置等信息均可以在这个关键字中找到。本关键字中的大部分设置都可以通过控制面板来修改。如果用户登录到系统中的信息,没有预定义的登录项,则采用本关键字下面的“Default”子关键字(如图2) 。

HKEY_CURRENT_USER

  HKEY_CURRENT_USER是一个指向HKEY_USERS结构中某个分支的指针,它包含当前用户的登录信息。实际上它就是HKEY_USERS\Default下面的一部分内容,如果在HKEY_USERS\Default下面没有用户登录的其它内容,那么这两个主关键字包含的内容是完全相同的。

HKEY_LOCAL_MACHINE

  该关键字包含了本地计算机(相对网络环境而言)的硬件和软件的全部信息。当系统的配置和设置发生变化时,本关键字下面的登录项也将随之改变。

HKEY_CURRENT_CONFIG

  这个关键字实际上也是指向HKEY_LOCAL _MACHINE\Config结构中的某个分支的指针。HKEY_CURRENT_CONFIG下面的子关键字及内容与HKEY_LOCAL _MACHINE\Config\0001分支下面的子关键字及内容是完全相同的。本关键字包含的主要内容是计算机的当前配置情况,如显示器、打印机等可选外部设备及其设置信息等,而且这个配置信息均将根据当前连接的网络类型、硬件配置以及应用软件的安装不同而有所变化。

HKEY_DYN_DATA

  顾名思义,本关键字包含了系统运行中的动态数据-即已发生的事件的有关信息。因此这个关键字的内容不仅包含系统硬件的当前状态,也包含了那些需要更新和检索的数据。这些数据都是动态变化的,它们总是最新的信息。WIN95每次启动时都将重新建立这个关键字。为了提高工作速度,HKEY_DYN_DATA实际上是存放在内存(RAM)中的,因此如果发生了对于注册表内容的修改,则不必立即写入磁盘。这对于提高系统的速度是十分必要的

(以下分割符内的内容,摘自《Windows98注册表大揭秘》 作者:徐洪云 )

1、HKEY_CLASSER_ROOT

  该份之下至少包括100个关键字,这个分支下主要包括OLE数据,还包括文件扩展名和文件或应用程序的关联,改变改分支中的数据结构和内容将直接影响到系统软件的应用,此下的信息都被保存在system.dat文件中。

2、HKEY_USER

  在这个关键字下显示的信息都保存在User.dat文件中,这包含了与具体用户有关的desktop(桌面)配置、网络连接以及start菜单。如果用户的计算机被配置为使用户的配置文件,那么系统就会为每个用户都创建一个单独的User.dat文件。当一个用户登录到计算机上时,Windows98将读取那个用户的user.dat文件,并把该文件放入内存中的Registry中。

3、HKEY_CURRENT_USER

  它是适用于当前用户的HKEY_ USER部分。如果只有一个用户,即确省用户,那么HKEY_USER.Default和HKEY_CURRENT_USER是相同信息的不同的显示方式。

4、HKEY_LOCAL_MACHINE

  这是针对计算机硬件以及安装的软件所设定的分支。如果计算机有多个硬件配置,那么每个配置的信息都保存在这里。如果你察看一下该分支下的SOFTWARE下面的信息,你会发现生产已安装软件的公司的名字都在这儿了,这个分支为关于每个公司产品的与具体机器有关的信息存放提供一个方便的地方。在这儿,你还可以发现应用程序名字、版本数、应用程序路径名以及以及硬件设置。Microsoft也使用这个分支注册它的软件。

5、HKEY_CURRENT_CONFIGURATION

  在这里用户可以找到显示设置情况和使用的打印机。

6、HKEY_DYN_DATA

  这里保存了Windows操作性能参数的数据,当Windows98加载后,该信息被保留在RAM中,同时被不断更新。

下面是各个子键的比较详细的介绍,看了上面还不满足的朋友请看,:)

(以下分割符内的内容,摘自《新潮电子》98年第六期 作者:何宗琦 )

HKEY_CLASSES_ROOT关键字

  该关键字由多个子关键字组成,具体可分为两种:一种是已经注册的各类文件的扩展名,一种是各种文件类型的有关信息。图1左窗格中的子关键字就是各种已经注册的文件扩展名。
  注册表内登录的文件扩展名中,一部分是系统约定的扩展名,另一部分是由应用程序自定义的扩展名。应用程序只有把自定义的扩展名登录到注册表中,系统才能识别和关联使用有关的文档,即只有经过注册的扩展名,系统才能自动关联。
  当选中某个扩展名关键字时,在窗口的右窗格中将显示出有关的键值。例如在图1里选中“.avi ”时,从其键值可以看出,对该扩展名将默认为动画文件(avifile)。在HKEY_CLASSES_ROOT 关键字中也包含了该类型文件的详细信息。仍然以avifile文件为例,移动滚动条可以找到子关键字“AVIFile”, 选中AVIFile可以看到其键值默认为“视频剪辑”,表示可以对.avi文件进行编辑、播放等操作。单击AVIFile左边的“+”号,可以看到如图2所示的树型子关键字。
  第一个子关键字是“CLSID”,即“分类标识”,在选中它时可以看到其默认的键值,如图3所示。系统可用这个标识号来识别相同类型的文件。
  在 HKEY_CLASSES_ROOT主关键字下也有一个子关键字“CLSID”,其中包含了所有注册文件的类标识。因此也可以通过类标识来查找相关文件的各种信息。图4即是通过类标识查找AVIFILE文件的例子。可以看到在该标识字下面还有10个子关键字,它们的键值也同样表示了AVIFILE文件的有关信息。
  下面我们把AVIFile的全部子关键字展开,来看看它包含了哪些有关的信息。展开全部子关键字后的窗口如图5所示。
  “Compressors”(压缩程序)下面的两个子关键字“auds”和“vids”分别给出了音频和视频数据压缩程序的类标识,通过这些类标识可以找到相应的处理程序。
  “DefaultIcon”的键值为:“c:pwin95mplayer.exe,3”,表示文件的默认图标是mplayer.exe文件中提供的第3号图标。
  把“DefaultIcon”的键值改为:“c:pwin95mplayer.exe,4”,则采用图6中的第4号图标作为.avi文件的图标。
  “Extensions”的作用是通过文件扩展名识别数据文件。它的3个子关键字中,AVI表示AVI文件,AV和WAV表示音频文件。
  “Insertable”是插入表。
  “protocol”包含了执行程序和编辑程序的路径和文件名。
  打开“StdExecute”(标准执行程序)下面的子关键字“Server”,可看到键值为:“c:pwin95mplayer.exe/avi”,即指定了执行程序的路径和文件名。
  打开“StdFileEditing”(标准文件编辑程序)下面的子关键字“Server”,可看到键值仍然为:“c:pwin95mplayer.exe/avi”,即编辑程序的路径和文件名。
  “verb”下面的3个子关键字0、1、2键值表示程序的工作状态,分别为“播放”、“编辑”和“打开”。“RIFFHandlers”表示相关文件句柄,包含了AVI和WAVE文件的类标识。
  “shell”包含了执行“打开”和“播放”命令的程序路径和文件名。它们在各自的“command”中列出的键值分别为“c:pwin95mplayer.exe %1”和“c:pwin95 mplayer.exe/play/close %1”。
  “shellex”中包含了“多媒体文件属性表”(AviPage)的文件句柄。
  下面我们再结合修改快捷方式图标来说明如何使用注册表修改显示信息。
  1.打开注册表编辑器,在 HKEY_CLASSES_ROOT 关键字下滚屏找到与快捷方式有关的子关键字“lnkfile”并选中它。如图7所示。
  2.键名“IsShortcut ” 表示在桌面的快捷方式图标的左下角标注一个向上的小箭头,即 ,如果你不喜欢这个小箭头,可以采用下面的方法删除它:选中“IsShortcut”,然后打开“编辑”菜单,单击“删除”命令,将该项删除。关闭注册表并重启Win95,你将发现快捷方式图标上已经没有小箭头了 。
  3.键名“NeverShowExt”表示在快捷方式图标下不显示文件扩展名。如果你希望显示扩展名,可以采用下面的方法把该键名改为“AlwayShowExt”:单击“NeverShowExt”,打开“编辑”菜单,单击“重命名”命令,输入新名。关闭注册表并重启Win95。你会发现快捷方式图标上已经加上扩展名了。

HKEY_CURRENT_USER关键字

  从图8中可以看到,HKEY_CURRENT_USER下面有7个子关键字。其中除“RemoteAccess”外,其余6个都为系统预定义。
AppEvents 登录已注册的各种应用事件
Control Panel 与控制面板设置有关的内容
InstallLocationsMRU 安装路径的有关信息
keyboard layout 键盘设置信息
Network 网络设置信息
RemoteAccess 此项是安装IE4.0建立的子关键字,包含该应用程序的有关信息
Software 软件的有关信息
1.AppEvents子关键字
  AppEvents子关键字包含了各种应用事件的列表。其下面又包含两个子关键字EventLabels(按字母顺序列表)和Schemes(按事件分类列表)。
  从图9可以看出,Schemes是按照应用(Apps)和命名(Name)对事件进行分类的。在本系统中,Apps共分为 Default(缺省)、Explorer(资源管理器)、Mplayer(媒体播放器)和Norton Navigator(笔者安装的应用程序);Name一般情况下均采用Windows缺省值。在“控制面板”中打开“声音”对话框,你可以看到这些事件的中文列表,其内容与按照应用(Apps)来对事件分类的列表是一一对应的。
2.Control Panel子关键字
  该子关键字所包含的内容与桌面、光标、键盘和鼠标等设置有关。改变它们的键值就将改变对应的工作环境或参数。图10为Control Panel的结构。
  在图10中可以看到,Control Panel下面又有8个子关键字。根据系统配置和设置情况的不同,子关键字的数目也会不同。例如有的系统中没有“Mouse”关键字,并不是表示计算机中没有安装鼠标,而是指你从来没有对鼠标作过任何设置,系统完全采用默认值。
虽然Control Panel中的键值与环境和特性有直接关系,但很多参数的改变并不要求用户通过修改注册表来实现,而只需通过“控制面板”即可进行修改。也有一些环境特性的改变只能通过修改注册表来实现,例如,改变菜单的弹出延迟时间。
  在Win95中,系统默认的菜单弹出延迟时间为400ms(随机器的性能不同,实际感觉到的延时可能有一定误差)。如要改变其缺省值,可在注册表编辑器的 HKEY_CURRENT_USER Control Paneldesktop中增加一个键值名“MenuShowDelay”,通过改变其键值来改变菜单显示延时(如图10所示),键值的设定范围为0~1000(ms)。
Accessibility
  这个子关键字包含了如图11所示的10个子关键字,多数子关键字在“控制面板”中都有对应的项。这些子关键字的键值名中一般都有一个“On”,当键值为0时,表示设置无效;键值为1时,表示设置生效。
Appearance
  这个子关键字的键值中列出了可供选择的各种颜色和图案。可以在“控制面板”的“显示/外观”对话框的“方案”下拉菜单中,看到这些颜色和图案的中文名称。
cursors
  这个子关键字的键值中列出了光标图案所在的文件路径。可以在“控制面板”的“鼠标/指针”对话框的“方案”下拉菜单中,看到这些颜色和图案的中文名称并进行设置。
desktop
  这个子关键字的键值中列出了桌面和窗口中的各种部件,如:窗口边界、标题、图标、菜单、滚动条、消息框的长度、宽度和字体等数据。这些数据可以在“控制面板”的“显示/外观”对话框的“项目”下拉菜单中进行修改。下面再举一个只能通过修改注册表来实现的例子。
  系统缺省设置,窗口在最小化和还原(或最大化)之间切换时,有一个平滑的变化过程(动画效果)。要取消这个动画效果,可以在HKEY_CURRENT_USER Control Paneldesktopwindowmetrics中增加一个键值名“MinAnimat”,其键值设置为0即可。
  注:为0为取消动画效果,非0则保留动画效果。
Input Method
  这个子关键字的键值中登录了“输入方法”转换热键的有关数据。这些数据你可以在“控制面板”中打开“输入法”对话框中的“热键”标签进行修改。
International
  这个子关键字的键值中登录了表示“上午”和“下午”的数据。这些数据可以在“控制面板”中打开“区域设置”对话框中的“时间”标签进行修改。
keyboard
  这个子关键字的键值中登录了击键时的重复延时和重复速率。这些数据可以在“控制面板”中打开“键盘”对话框中的“速度”标签进行修改。
Mouse
  这个子关键字的键值中登录了鼠标的双击速度和指针的移动速度。这些数据可以在“控制面板”中打开“鼠标”对话框中的“按钮”和“移动”标签进行修改。
  上面以AppEvents和Control Panel这两个子关键字为例作了比较详细的讨论,限于篇幅,对其他子关键字就不再详细介绍了。读者可以按照前面所列出的子关键字的基本内容自己进行分析。

HKEY_LOCAL_MACHINE关键字

  图12中,HKEY_LOCAL_MACHINE下面的子关键字有8个。其中“.mp2”是安装播放软件“XING MPEG”后定义的关键字,其余的是系统预定义关键字。下面我们先对预定义关键字作简单介绍。
Config 包含了有关显示字体、分辨率、显示点距、颜色深度以及打印机型号等信息。
Enum 包含了系统当前配置的所有硬件设备的信息。
hardware 包含了系统使用的浮点处理器、串口等有关信息。
Network 包含了网络的有关信息。
Security 包含了安全设置的信息。
SOFTWARE 包含了系统软件、当前安装的应用软件及用户的有关信息。
System 包含了系统的全部软件和硬件信息。

对于HKEY_LOCAL_MACHINE关键字,有两点应该说明:
  1.根据计算机中硬件配置和安装文件的不同,在HKEY_LOCAL_MACHINE中的信息将有很大的差别(在其他的关键字中也会反应出这种差别)。
  2.HKEY_LOCAL_MACHINE下面各个子关键字中包含的信息有很多是重复的,这样做的目的,只是为了浏览和编辑的方便。当然在注册表数据库中是不会重复的。

  下面以笔者使用的5X86系统的Enum(枚举)子关键字为例,介绍它的结构和包含的信息。
由于该硬件系统配置简单,因此图13中列出Enum下面的子关键字只有8项。如果你的硬件系统采用的是新型的主板并具有更多的配置,在Enum下面将会出现更多的子项,如BIOS、声卡、解压卡等。如果你的硬盘分为多个逻辑盘,也会把这些逻辑盘作为子项列出。下面就图13列出的几个子项作进一步介绍。
  1.ESDI子关键字 该关键字包含了硬盘的有关信息,图14为ESDI的结构。
由于本系统配置了两个硬盘,因此有两个子项“ROOT&*PNP0600&000000”和“ROOT&*PNP0600&000010”,分别表示C、D两个硬盘。在右窗格中显示出C盘的若干有关信息。子项关键字中的前缀“ROOT”表示它们是挂接在“根”下面的设备,你可以在ROOT子关键字中找到它们。
  如果你在系统中安装了虚拟光驱,也将在本子关键字中出现,而不会在SCSI子关键字中出现。因为虚拟光驱实际上是硬盘的一个部分。
  2.FLOP子关键字 登录了软盘驱动器的有关信息。
  3.HTREE子关键字 本系统没有使用。
  4.Moniter子关键字 包含了系统监视器的有关信息。
  5.Network子关键字 包含了本系统安装网络的有关信息。
  6.PCI子关键字 包含了PCI总线和PCI设备的有关信息。
  7.ROOT子关键字 包含了系统根节点下面挂接的所有系统设备和外部设备的有关信息。例如,本系统中硬盘C为子关键字“ROOT&*PNP0600&000000”,就说明它是挂接在根节点下面的。在ROOTPNP0600000中可以找到硬盘C的有关信息,如图15所示。
  8.SCSI子关键字 登录了各种SCSI设备的有 关信息。光驱的有关信息一般也登录在此。

热词搜索:

上一篇:保存注册表信息的文件
下一篇:备份恢复注册表的方法

分享到: 收藏