注册表

 

 注册表的结构 - Win32 apps | Microsoft Docs https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/structure-of-the-registry

注册表是层次结构数据库,其中包含的数据对 Windows 和 Windows 上运行的应用程序和服务的操作至关重要。 数据以树格式进行构造。 树中的每个节点称为 。 每个密钥都可以包含 子项 和称为  的数据项。 有时,一个密钥就是应用程序需要的所有数据;其他情况下,应用程序会打开一个密钥并使用与该密钥相关联的值。 键可以有任意数量的值,并且这些值可以采用任何形式。

 

Overview of the Windows Registry: Core Services | Microsoft Docs https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2003/cc781906(v=ws.10)

 

The registry is a hierarchical database that stores the values of variables in Windows and the applications and services that run on Windows. The operating system and other programs also use the registry to store data about users and about the current configuration of the system and its components. Because the registry is available whenever the system is running, programs that start and stop can keep persistent data in the registry.

 

 

 

https://zh.wikipedia.org/wiki/注册表

https://support.microsoft.com/zh-cn/help/141377/differences-between-regedit-exe-and-regedt32-exe

数据结构

注册表由键(key,或称“项”)、子键(subkey,子项)和值项(value)构成。一个键就是树状数据结构中的一个节点,而子键就是这个节点的子节点,子键也是键。一个值项则是一个键的一条属性,由名称(name)、数据类型(datatype)以及数据(data)组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。

在注册表编辑器(Regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为%systemroot%\system32\NOTEPAD.EXE "%1

 

 

以上信息的意义是:txt类型的文件在右键菜单里的“打开”一项使用的程序是“NOTEPAD.EXE”,即用记事本打开文件。

数据类型

注册表的数据类型主要有以下五种:

显示类型(在编辑器中)数据类型说明
REG_SZ 字符串 文本字符串
REG_BINARY 二进制数 不定长度的二进制值,以十六进制显示
REG_DWORD 双字 一个 32 位的二进制值,显示为 8 位的十六进制值
REG_MULTI_SZ 多字符串 含有多个文本值的字符串,此名来源于字符串间用 nul 分隔、结尾两个 nul
REG_EXPAND_SZ 可扩展字符串 含有环境变量的字符串

此外,注册表还有其他的数据类型,但是均不常用:

  • REG_DWORD_BIG_ENDIAN - DWORD 的大头版本,下面同理
  • REG_DWORD_LITTLE_ENDIAN
  • REG_FULL_RESOURCE_DESCRIPTOR
  • REG_QWORD - DWORD 的四字(64 位)版本
  • REG_FILE_NAME

注册表的分支结构

注册表有五个一级分支,下面是这五个分支的名称及作用:

名称作用
HKEY_CLASSES_ROOT 存储Windows可识别的文件类型的详细列表,以及相关联的程序。
HKEY_CURRENT_USER 存储当前用户设置的信息。
HKEY_LOCAL_MACHINE 包括安装在计算机上的硬件和软件的信息。
HKEY_USERS 包含使用计算机的用户的信息。
HKEY_CURRENT_CONFIG 这个分支包含计算机当前的硬件配置信息。

注册表的存储方式[编辑]

注册表的存储位置随着Windows的版本变化而不同。尤其是Windows NT系列操作系统和Windows 95系列的存储方式有很大区别。注册表被分成多个文件存储,称为Registry Hives,每一个文件被称为一个配置单元。

在早期的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 管理员对用户强行进行的设置
  • 假设Windows安装于C盘,则在Windows XP以前,文件存放于C:\WINNT\SYSTEM32\CONFIG,而XP及以后则存放于C:\WINDOWS\SYSTEM32\CONFIG

Windos95家族的配置文件

 

名称注册表分支作用
CLASSES HKEY_CLASSES_ROOT 存储软件组件库有关信息
USER.DAT HKEY_USERS 存储用户参数选择的信息
SYSTEM.DAT HKEY_LOCAL_MACHINE 系统信息

 

 

 

 

 

 

 

 

 
posted @ 2017-04-25 22:11  papering  阅读(369)  评论(0编辑  收藏  举报