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 | 系统信息 |
概要
基于 Windows NT 的操作系统包含两个用于编辑注册表的实用工具:Regedit.exe 和 Regedt32.exe。本文描述在各种基于 Windows NT 的操作系统中这两个实用工具之间的区别。
更多信息
Windows NT 3.x
Regedit.exe
Regedit.exe 是 16 位 Windows 操作系统的注册编辑器。它用于修改 Windows 的注册数据库。此数据库位于 Windows 目录下,名称是 Reg.dat。数据库中包含有关 16 位应用程序的信息,文件管理器用它来打开和打印文件。支持对象链接和嵌入 (OLE) 的应用程序也使用此数据库。Windows on Windows (WOW) 和 16 位 Windows 应用程序使用并维护 Reg.dat。WOW 层位于虚拟 DOS 机器 (VDM) 层之上。
Regedit.exe 是 16 位应用程序,Windows NT 中包含它是为了与早先的 16 位应用程序兼容。Regedit 提供了在 Windows NT 下查看 Reg.dat 的方法。您可以在 Windows NT 初始安装完成后的首次登录时将 Reg.dat 数据库文件迁移到 Windows NT 注册表。
Regedt32.exe
Regedt32.exe 是 Windows NT 的配置编辑器。它用于修改 Windows NT 配置数据库或 Windows NT 注册表。此编辑器允许您查看或修改 Windows NT 注册表。它提供了表示注册表各个部分(称为配置单元)的窗口视图。每个窗口显示两部分。左侧是表示注册表项的文件夹。右侧是与所选注册表项关联的值。Regedt32 是一个功能强大的工具。使用它修改注册表值时必须格外小心。注册表中的值丢失或不正确可能导致已安装的 Windows NT 系统无法使用。
Windows NT 4.0 和 Windows 2000
Regedit.exe
Windows NT 4.0 和 Windows 2000 中包含 Regedit.exe 主要是为了使用它的搜索功能。您可以使用 Regedit.exe 更改 Windows NT 4.0 和 Windows 2000 注册表,但并非 Windows NT 4.0 和 Windows 2000 中的所有功能或数据类型都能用它来查看或编辑。
Windows NT 4.0 和 Windows 2000 中包含的 Regedit.exe 版本存在以下局限:
- 无法为注册表项设置安全性。
- 无法查看、编辑或搜索 REG_EXPAND_SZ 和 REG_MULTI_SZ 这两种值数据类型。如果试图查看 REG_EXPAND_SZ 值,Regedit.exe 会将其显示为二进制数据类型。如果试图编辑上述任一数据类型,Regedit.exe 会将其保存为 REG_SZ,而且该数据类型将无法执行预期的功能。
- 您无法将注册表项保存为或还原为配置单元文件。
Microsoft 建议,如果需要在基于 Windows NT 4.0 或 Windows 2000 的计算机上使用 Regedit.exe,则只使用它的搜索功能。
Regedt32.exe
Regedt32.exe 是 Windows NT 4.0 和 Windows 2000 的配置编辑器,用于修改 Windows NT 配置数据库或 Windows NT 注册表。此编辑器允许您查看或修改 Windows NT 注册表。它提供了表示注册表各个部分(称为配置单元)的窗口视图。每个窗口显示两部分。左侧是表示注册表项的文件夹。右侧是与所选注册表项关联的值。Regedt32 是一个功能强大的工具,使用它修改注册表值时必须格外小心。注册表中的值丢失或不正确可能导致已经安装的 Windows 系统无法使用。
注意:与 Regedit.exe 不同,Regedt32.exe 不支持注册项文件 (.reg) 的导入和导出。
Windows XP 和 Windows Server 2003
Regedit.exe
Regedit.exe 是 Windows XP 和 Windows Server 2003 的配置编辑器,用于修改 Windows NT 配置数据库或 Windows NT 注册表。您可以使用此编辑器查看或修改 Windows NT 注册表。它支持以下功能:在注册表项上设置安全性;查看和编辑 REG_EXPAND_SZ 与 REG_MULTI_SZ;保存和还原配置单元文件。左侧是表示注册表项的文件夹。右侧是与所选注册表项关联的值。Regedit 是一个功能强大的工具。使用它修改注册表值时必须格外小心。注册表中的值丢失或不正确可能导致已经安装的 Windows 系统无法使用。
Regedt32.exe
在 Windows XP 和 Windows Server 2003 中,Regedt32.exe 只是一个用来运行 Regedit.exe 的小程序。