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

系统信息


 

 

 




Regedit.exe 和 Regedt32.exe 的区别









概要






基于 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 的小程序。