C:\Windows\System32\reg.exe 核心定位:Windows 原生控制台注册表管理工具,面向脚本 / 自动化,精细化操作注册表项、值、hive 快照;底层统一调用 advapi32.dll 注册表 Win32 API,和 regedit.exe 底层同源,但无图形界面、支持细粒度原子操作 公共前置依赖

reg commands | Microsoft Learn

reg.exe 全枚举实例(单命令 + 多参数混合组合,管理员权限,Windows 注册表操作)

前置说明

  1. reg 是 Windows 内置注册表命令行工具;支持 query / add / delete / copy / save / restore / load / unload / compare / export / import
  2. 注册表根键简写: HKCR=HKEY_CLASSES_ROOT|HKCU=HKEY_CURRENT_USER|HKLM=HKEY_LOCAL_MACHINE HKU=HKEY_USERS|HKCC=HKEY_CURRENT_CONFIG
  3. 路径 / 名称带空格,必须用双引号包裹;修改 HKLM、HKCC 等系统分支必须管理员 CMD/PowerShell
  4. 值类型:REG_SZ字符串|REG_DWORD32 位整数|REG_QWORD64 位整数|REG_MULTI_SZ多字符串|REG_BINARY二进制

一、单命令实例

序号 命令 简要说明
1 reg /? 查看 reg.exe 全局帮助
2 reg query HKCU 查询 HKCU 根键下所有一级子项
3 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" 查询指定注册表项,列出子项与键值
4 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /v "ProgramFilesDir" 查询单个键值ProgramFilesDir
5 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /s 递归查询该项下所有子项 + 所有键值(/s 递归)
6 reg add "HKCU\Software\MyTest" 新建注册表项(文件夹)
7 reg add "HKCU\Software\MyTest" /v "MyString" /t REG_SZ /d "HelloReg" 新建 REG_SZ 字符串键值 MyString,内容 HelloReg
8 reg add "HKCU\Software\MyTest" /v "MyDword" /t REG_DWORD /d 1 新建 REG_DWORD,值 = 1
9 reg add "HKCU\Software\MyTest" /v "MyQword" /t REG_QWORD /d 100 新建 REG_QWORD 64 位整数
10 reg add "HKCU\Software\MyTest" /v "MyBin" /t REG_BINARY /d 010203 新建二进制 REG_BINARY
11 reg delete "HKCU\Software\MyTest" 删除注册表项(连同里面所有键值,带提示确认)
12 reg delete "HKCU\Software\MyTest" /v "MyString" 仅删除指定键值 MyString,保留注册表项
13 reg copy "HKCU\Software\MyTest" "HKCU\Software\MyTest2" 复制整个注册表项到新路径
14 reg export "HKCU\Software\MyTest" "C:\reg_backup\mytest.reg" 导出注册表项为.reg 文本备份文件
15 reg import "C:\reg_backup\mytest.reg" 导入.reg 注册表文件
16 reg save "HKLM\SAM" "C:\reg_backup\sam.hiv" 保存注册表配置单元 (hive) 为二进制文件(管理员)
17 reg restore "HKLM\SAM" "C:\reg_backup\sam.hiv" 从 hive 文件恢复注册表单元(管理员,高风险)
18 reg load "HKLM\TempHive" "C:\hive\ntuser.dat" 加载离线 ntuser.dat 用户配置单元到临时 HKLM\TempHive(管理员)
19 reg unload "HKLM\TempHive" 卸载已加载的离线注册表 hive
20 reg compare "HKCU\Software\MyTest" "HKCU\Software\MyTest2" 对比两个注册表项差异

二、双参数混合组合

序号 命令 简要说明
21 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /v "ProgramFilesDir" /z 查询键值并显示完整值类型
22 reg query "HKCU\Software\MyTest" /s /f "My" 递归查询,筛选包含 "My" 的键名 / 值(/f 筛选)
23 reg add "HKCU\Software\MyTest" /v "MyDword" /t REG_DWORD /d 0 /f 添加键值,/f 强制覆盖不弹窗确认
24 reg delete "HKCU\Software\MyTest" /f 删除注册表项,/f 强制删除,跳过确认提示
25 reg delete "HKCU\Software\MyTest" /v "MyDword" /f 强制删除单个键值,无确认弹窗
26 reg export "HKCU\Software\MyTest" "C:\reg_backup\mytest.reg" /y 导出 reg 文件,/y 覆盖已有文件不提示
27 reg copy "HKCU\Software\MyTest" "HKLM\Software\MyTest" /s 递归复制所有子项和键值到目标路径
28 reg compare "HKCU\Software\MyTest" "HKCU\Software\MyTest2" /o 对比并仅输出差异项,忽略相同内容

三、三参数混合组合

序号 命令 简要说明
29 reg query "HKLM\SYSTEM\CurrentControlSet\Services" /s /f "Tcpip" /k 递归查询,只匹配项名称包含 Tcpip(/k 只匹配 key,不匹配 value)
30 reg add "HKCU\Software\MyTest" /v "MyMultiStr" /t REG_MULTI_SZ /d "Line1\0Line2\0" /f 新建多字符串 REG_MULTI_SZ,多行字符串,强制覆盖
31 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations /t REG_MULTI_SZ /d "" /f 管理员:清空 PendingFileRenameOperations 待重启文件重命名列表
32 reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "C:\reg_backup\runkeys.reg" /y 导出开机自启 Run 项备份,覆盖旧文件
33 reg save "HKLM\SYSTEM" "C:\reg_backup\system.hiv" /y 保存系统 hive,覆盖已有文件

四、多参数复杂混合组合(4 个及以上参数,脚本常用)

序号 命令 简要说明
34 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /s && reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "C:\reg_backup\run.reg" /y 查看开机自启项,同时导出 Run 注册表备份
35 reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 0 /f && taskkill /f /im explorer.exe && start explorer.exe 注册表开启显示文件扩展名,重启资源管理器生效
36 reg export "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" "C:\reg_backup\tcpip.reg" /y && reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "IPEnableRouter" 备份 TCPIP 参数并查看 IP 转发开关
37 reg load "HKLM\TempUserHive" "D:\OfflineProfile\ntuser.dat" && reg query "HKLM\TempUserHive\Software" /s && reg unload "HKLM\TempUserHive" 加载离线用户配置单元、查询,完成后卸载(离线系统维护)

五、运维批量脚本片段(管理员 CMD)

::1. 导出开机自启Run项备份
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "C:\reg_backup\run_hklm.reg" /y
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" "C:\reg_backup\run_hkcu.reg" /y
::2. 查询所有Run自启键值
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
::3. 新建测试注册表项与键值
reg add "HKCU\Software\RegDemo"
reg add "HKCU\Software\RegDemo" /v DemoDword /t REG_DWORD /d 1 /f
::4. 删除测试项
reg delete "HKCU\Software\RegDemo" /f

六、无效 / 边界说明

| 无效命令 | 原因 | | ---- | ---- | ---- | |reg add HKCU\Software\MyTest /v Test /t REG_DWORD| 缺少/d值参数,无法创建 | |reg query HKLM\SOFTWARE\NoExistKey| 注册表项不存在,直接报错 | |reg save HKLM\SYSTEM C:\system.hiv 普通用户执行 | 保存 HKLM hive 必须管理员权限 | |reg add "HKCU\Software\Test" /v Bin /t REG_BINARY /d 0102| 二进制数据不能带空格,连续十六进制字符 | |reg unload HKLM\TempHive hive 还在占用 | 必须先关闭对该 hive 的查询,否则 unload 失败 |

七、运维场景快速选型

  • 查询开机自启项:reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  • 导出注册表备份:reg export "HKCU\Software\MyTest" "C:\backup.reg" /y
  • 新建 DWORD 注册表项:reg add "HKCU\Software\MyTest" /v "MyDword" /t REG_DWORD /d 1 /f
  • 删除注册表项无确认:reg delete "HKCU\Software\MyTest" /f
  • 离线加载用户注册表:reg load "HKLM\TempHive" "D:\ntuser.dat"

image

reg.exe 全套子命令逐条完整解构

程序本体:C:\Windows\System32\reg.exe 核心定位:Windows 原生控制台注册表管理工具,面向脚本 / 自动化,精细化操作注册表项、值、hive 快照;底层统一调用 advapi32.dll 注册表 Win32 API,和 regedit.exe 底层同源,但无图形界面、支持细粒度原子操作 公共前置依赖:

  • 核心依赖库:advapi32.dll(RegOpenKeyEx / RegQueryValueEx / RegSetValueEx / RegSaveKey / RegLoadKey 等核心 API)
  • 内核组件:ntoskrnl.exe、配置管理器 cm.dll,hive 持久文件(SYSTEM、SOFTWARE、SAM、SECURITY、NTUSER.DAT)
  • 基础依赖:kernel32.dlluser32.dll
  • 返回码通用规则:0 = 成功,1 = 失败;REG COMPARE 返回码有额外定义
子命令 底层原理 依赖文件 依赖关系 逻辑链路 配套链 边界(坑点)
REG QUERY 调用 Advapi32 枚举指定注册表路径下的子项 / 键值,支持递归查询,读取数据并格式化输出到控制台 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 advapi32 的查询类 API;权限由内核安全描述符校验 reg.exe → RegOpenKeyEx → RegQueryInfoKey/RegEnumKeyEx/RegEnumValue → 数据格式化输出 → RegCloseKey 资产巡检脚本、基线核查、PowerShell 联动、远程注册表查询 1. 默认不递归,/s 才递归遍历子项2. 32/64 位 Wow6432Node 重定向问题3. 权限不足时直接跳过,不会中断整体查询4. 长注册表路径存在截断风险
REG ADD 调用注册表创建 / 设置 API,新建注册表项、新增 / 修改键值,支持指定值类型(REG_SZ/REG_DWORD 等) reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegCreateKeyEx、RegSetValueEx;管理员权限才能写入 HKLM/HKCR reg.exe → RegCreateKeyEx(不存在则新建项) → RegSetValueEx 写入键值 → RegCloseKey 装机脚本、GPO 补充配置、系统加固、自动化基线下发 1. 同名键值默认直接覆盖,/f 屏蔽确认提示2. 必须显式指定类型,类型写错会写入异常3. 不自带事务,中途失败已写入数据保留4. 普通用户仅可修改 HKCU
REG DELETE 调用删除 API,删除指定注册表项或键值,支持递归删除子树 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegDeleteKeyEx / RegDeleteValue API;受注册表权限保护 reg.exe → RegOpenKeyEx → RegDeleteKeyEx/RegDeleteValue → RegCloseKey 清理残留软件注册表、基线清理、漏洞修复脚本 1. 默认弹出确认,/f 静默删除(运维高频)2. 受保护系统项(SAM/SECURITY)默认无法删除3. Wow64 重定向容易删错 32/64 分支
REG COPY 递归读取源注册表分支所有项和值,批量复制写入目标路径;支持本地→本地、本地→远程注册表 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖枚举 + 写入 API;远程场景依赖 Remote Registry 服务、RPC reg.exe → 枚举源分支所有子项 / 值 → 循环在目标路径创建并写入 → RegCloseKey 注册表分支迁移、环境同步、域内批量分发配置 1. 目标已存在键值会直接覆盖2. 远程复制需要目标主机开启 winreg 服务 + 放行 RPC 端口3. 不支持跨 hive 特殊权限项的直接迁移
REG SAVE 调用RegSaveKey内核 API,将整个注册表分支导出为二进制 hive 文件(区别于文本.reg),是注册表快照能力 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 强依赖 RegSaveKey;需要管理员特权;生成的是二进制 hive,不是文本 reg.exe → RegOpenKeyEx → RegSaveKey(内核输出 hive 快照) → RegCloseKey 系统备份、离线取证、离线注册表修改、灾备快照 1. 产物是二进制 hive,不能直接用记事本编辑2. 仅管理员可导出 HKLM 等系统分支3. 和 REG EXPORT(文本 reg)完全不同
REG LOAD 将外部二进制 hive 文件挂载到当前注册表的临时项节点,用于离线修改 ntuser.dat/SYSTEM 等文件 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegLoadKey API;仅管理员可用;必须配套 REG UNLOAD 释放 reg.exe → RegLoadKey 将外部 hive 映射到指定路径 → 后续可 reg query/add 修改 离线系统修复、模板用户配置定制、PE 环境维护 1. 只能加载非正在使用的 hive 文件2. 修改完成必须执行 REG UNLOAD,否则 hive 文件被锁定3. 无法加载系统正在占用的 SYSTEM/NTUSER.DAT
REG UNLOAD 卸载由 REG LOAD 挂载的离线 hive,释放文件句柄,解除映射 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegUnLoadKey;必须是 REG LOAD 挂载的节点,普通注册表项不能 unload reg.exe → RegUnLoadKey 解除 hive 映射 → 释放文件锁 离线注册表修改收尾、自动化脚本清理 1. 忘记 unload 会导致 hive 文件一直占用、无法移动 / 删除2. 不能用于正常系统已加载的 hive 根键
REG RESTORE REG SAVE生成的二进制 hive 快照覆盖回目标注册表分支 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegRestoreKey 内核 API;高危操作,直接覆盖现有注册表数据 reg.exe → RegOpenKeyEx → RegRestoreKey 用 hive 覆盖目标分支 → RegCloseKey 注册表灾备恢复、批量基线回滚 1. 直接覆盖目标分支所有内容,无二次确认(可搭配 /f)2. 不能恢复到正在被系统占用的关键 hive3. 和 REG IMPORT(文本 reg 导入)能力不同
REG COMPARE 对比两个注册表分支的键、值、数据差异,输出差异结果;返回码具备特殊含义:0 = 相同,1 = 不同,2 = 出错 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖双分支枚举比对逻辑;支持本地 / 远程注册表对比 reg.exe → 分别枚举 A、B 两个分支的全部项值 → 逐条比对 → 输出差异标记 基线一致性核查、变更审计、合规检测 1. 返回码和其他 reg 子命令不一致,脚本判断要单独处理2. 递归比对耗时随注册表数量指数上升3. 权限不足跳过的项会误判为差异
REG EXPORT 将注册表分支导出为文本格式.reg 文件(Unicode),和 regedit /e 生成的 reg 格式一致 reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 枚举 API + 内置 reg 文本序列化逻辑 reg.exe → 递归枚举分支 → 组装标准 REG 文本 → 写入文件 轻量化配置备份、跨机器分发、regedit 导入配套 1. 产物是文本,可手动编辑2. 默认 UTF16-LE 编码,部分老旧工具解析乱码3. 最小粒度为注册表项,不能单独导出单个值
REG IMPORT 读取标准.reg 文本文件,批量写入注册表,等价于 regedit /s reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 内置 REG 解析器,翻译为一系列注册表写入 API reg.exe → 解析 reg 文本 → 批量调用 RegCreateKeyEx/RegSetValueEx → 落盘 自动化批量配置、基线下发,替代 regedit 静默导入 1. 无事务,中途失败已写入数据保留2. reg 内[-路径]语法可实现删除项3. 32/64 重定向坑同 regedit
REG FLAGS 管理注册表项的特殊标志(如虚拟化标志、关键保护标志、内核事务标志等,Vista + 新增) reg.exe、advapi32.dll、kernel32.dll、ntoskrnl.exe 依赖 RegSetKeySecurity/RegSetKeyFlags 系列高级 API,需要高权限 reg.exe → 打开目标项 → 读写注册表元标志 → RegCloseKey 虚拟化兼容配置、受保护项管理、系统底层调优 1. 该参数在 Win10/11 部分版本文档少,日常运维极少使用2. 修改错误极易造成程序 / 系统异常3. 普通管理员权限可能不足,需要 SeSecurityPrivilege

补充总配套链路(自动化标准流水线)

REG SAVE → 备份快照 → REG EXPORT 导出文本基线 → REG QUERY/COMPARE 巡检差异 → REG ADD/DELETE 批量修改 → REG IMPORT 回滚配置 → REG LOAD/UNLOAD 离线维护

核心区分总结(reg.exe vs regedit.exe)

维度 reg.exe regedit.exe
形态 纯控制台工具,适合脚本自动化 GUI 编辑器,附带 reg 导入导出命令行能力
细粒度操作 ✅ 支持单键值增删改查、hive 快照、离线加载 ❌ 仅支持整分支 reg 导入导出,无单值删除
二进制 hive ✅ SAVE/RESTORE/LOAD/UNLOAD ❌ 不支持 hive 快照,只能文本 reg
交互确认 自带/f强制静默参数 /s默认直接覆盖,无 /f 参数
远程能力 支持远程查询 / 复制 远程仅 GUI 浏览,不支持命令行批量

reg.exe 注册表命令行工具完整演进史

一、前置背景:Windows 注册表诞生(Windows 3.1 / NT 3.1,1992–1993)

  1. Windows 3.x 早期依赖 .ini 文本配置文件,无统一注册表;
  2. Windows NT 3.1 首创分层二进制注册表,统一管理系统 / 用户硬件、驱动、安全、软件配置,配套内核注册表读写 API;
  3. 初代仅提供图形化 regedit.exe,无命令行批量操作工具,运维、脚本自动化完全空白,催生 reg.exe 开发需求。

阶段 1:初代诞生(Windows NT 3.5 / NT 4.0,1994–1996)—— 极简基础读写工具

1. 功能定位

仅面向服务器管理员,实现最基础注册表增删查改,无导出 / 导入 / 备份 / 对比能力。

初代支持子命令

QUERYADDDELETECOPY 4 个基础操作;无 SAVE/RESTORE/EXPORT/IMPORT/COMPARE/LOAD/UNLOAD/FLAGS。

核心局限

  1. 仅支持本地注册表,无离线加载离线配置单元能力;
  2. .reg 文本导入导出,无法批量分发配置;
  3. 无返回码标准化,脚本无法判断执行成败;
  4. 不支持远程注册表操作、无权限标志管理;
  5. 仅 CMD 可用,无 PowerShell 适配。

适用场景

服务器单机少量注册表手动修改,无法支撑批量运维、基线加固。

阶段 2:功能补齐成型(Windows 2000 / XP / Server 2003,2000–2003)—— 完整备份、导入导出、离线操作落地

关键新增能力

  1. REG EXPORT / REG IMPORT
     
    支持导出 / 导入 .reg 文本注册表文件,实现批量配置分发,奠定企业基线自动化基础;
  2. REG SAVE / REG RESTORE
     
    二进制快照备份注册表分支,修改高危系统项前可完整回滚,解决误操作蓝屏风险;
  3. REG LOAD / REG UNLOAD
     
    支持挂载离线系统 SYSTEMNTUSER.DAT 配置单元,离线取证、离线镜像加固成为可能;
  4. 标准化返回码:成功 0、失败 1,适配批处理脚本判断执行状态;
  5. REG COMPARE 注册表对比,基线巡检、合规校验功能落地。

新增子命令:FLAGS(注册表虚拟化 / 权限标志管理)

用于管控 UAC 虚拟化、锁定系统关键注册表项,初步支持安全加固场景。

本阶段里程碑

11 个子命令全部补齐(QUERY/ADD/DELETE/COPY/SAVE/LOAD/UNLOAD/RESTORE/COMPARE/EXPORT/IMPORT/FLAGS),与当前图片展示的完整操作集完全一致,功能框架定型沿用至今。

阶段 3:Vista / Win7 / Server 2008 R2(2006–2009)—— 安全加固、远程注册表、UAC 适配

核心升级

  1. UAC 权限隔离适配
     
    修改 HKLM 系统根键必须管理员权限,普通用户仅允许读写 HKCU;reg.exe 自动拦截低权限修改系统项,返回错误码 1;
  2. 完整支持远程注册表操作
     
    语法支持 \\计算机名\注册表根键,域管理员批量操作内网终端注册表;
  3. 键值类型完整兼容:REG_DWORD、REG_SZ、REG_MULTI_SZ、REG_BINARY、REG_QWORD 全类型读写;
  4. 批量静默参数 /f 强制覆盖 / 删除,无需弹窗交互,适配无人值守脚本;
  5. 日志输出标准化,支持管道输出文本,对接 SIEM 日志采集。

场景拓展

大量安全加固脚本依托 reg.exe 实现:关闭自动播放、禁用远程桌面、加固 http.sys、驱动黑名单配置。

阶段 4:Win10 全版本迭代(1507–20H2,2015–2020)—— 虚拟化安全 VBS/HVCI/CFA 配套适配、PowerShell 深度兼容

1. PowerShell 原生兼容优化

reg.exe 作为外部可执行文件,完美适配 PowerShell 管道、变量、路径引号规则,成为 VBS、内存完整性、受控文件夹访问加固标准工具;

2. 新增安全场景专属适配

  • 支持修改 VBS、HVCI 内存完整性、CFA 受控文件夹访问、Defender 篡改防护相关内核注册表;
  • 可读写 Secure Boot、TPM2.0 硬件安全相关配置项;
  • REG FLAGS 增强,支持锁定安全类注册表,防止勒索病毒、恶意驱动篡改防护开关;

3. 性能优化

批量查询、导出大注册表分支减少内存占用,企业批量终端基线脚本执行速度大幅提升;

4. 云服务器适配

支持 Server Core 无图形系统,无 regedit.exe 环境下唯一注册表操作工具,Azure / 本地服务器批量加固依赖 reg.exe。

阶段 5:Win11 21H2~25H2 / Server 2022~2025(2021–2026)—— 硬件强制安全基线、离线取证强化、容器兼容

1. Hardware‑enforced HVCI、Secured‑core PC 配套适配

reg.exe 可读写 CPU 固件、Pluton 安全芯片、IOMMU DMA 防护相关底层注册表,适配现代硬件强制安全基线;

2. Windows 容器、嵌套虚拟化 VBS 支持

可修改容器内注册表,批量配置容器内存完整性、CFA 防护策略;

3. 离线取证能力增强

REG LOAD 兼容 Win11 新格式用户配置单元,宕机主机、勒索病毒受害终端离线取证标准化工具;

4. 脚本静默与错误处理完善

返回码逻辑无变更,兼容旧版批处理 / PS 脚本,向下全系统兼容;

5. 无功能删减

11 个子操作命令集完全保留,未删除任何早期功能,保障老旧运维脚本无缝迁移。

二、核心演进维度对比表

系统版本阶段 子命令数量 核心标志性新增能力 主要使用场景
NT 4.0 初代 4 个 基础增删查改 单机少量手动修改
Win2000/XP 11 个完整 EXPORT/IMPORT/SAVE/LOAD/COMPARE/FLAGS 全功能补齐 批量配置、离线备份、基线导出
Win7/2008R2 11 个(功能增强) UAC 权限、远程注册表、静默 /f 参数 域终端批量运维、基础安全加固
Win10 全系列 11 个 PowerShell 兼容、VBS/HVCI/CFA 安全配置 内核虚拟化安全加固、云服务器脚本
Win11/Server2022+ 11 个 硬件安全注册表、容器适配、离线取证优化 Secured-core 整机基线、容器 / 云主机等保加固

三、演进核心四大趋势总结

  1. 功能从极简到全链路闭环
     
    从仅支持单机简单读写,到覆盖「查询 - 新增 - 删除 - 复制 - 备份 - 恢复 - 导出 - 导入 - 离线挂载 - 对比 - 权限锁定」完整注册表生命周期操作,一套工具覆盖运维、安全、取证全场景。
  2. 使用场景从单机运维 → 域批量 / 云 / 容器 / 离线取证全域覆盖
     
    早期仅本地手动操作,现支撑内网终端批量基线、Azure 云服务器、Windows 容器、宕机硬盘离线取证、等保合规巡检。
  3. 安全能力持续深化,成为 Windows 底层安全配置标准入口
     
    随 VBS、HVCI、CFA、Secure Boot、Pluton 硬件安全体系迭代,reg.exe 成为开启 / 关闭内核防护、锁定安全策略的标准命令行工具,是红蓝对抗、终端加固必备工具。
  4. 极强向下兼容性
     
    2000 年定型的 11 个核心子命令至今未做删减,近 30 年所有 Windows 系统通用,老旧批处理、PowerShell 加固脚本无需修改即可在 Win11/Server2025 直接运行。

四、演进核心价值

  1. 弥补图形化 regedit 无法自动化、批量操作的短板,支撑 Windows 大规模终端标准化运维;
  2. 作为无 GUI 服务器(Server Core)唯一原生注册表操作工具,支撑云、虚拟化基础设施管理;
  3. 贯穿 Windows 整套虚拟化安全、勒索防护、硬件安全体系,是安全基线落地、漏洞缓解的核心命令行载体;
  4. 统一离线取证入口,为应急响应、勒索病毒溯源提供原生无依赖注册表解析能力。

reg.exe 底层完整原理

一、整体分层架构

plaintext
reg.exe 可执行程序(用户态控制台应用)
        ↓ 调用 Win32 注册表用户态API(Advapi32.dll)
Advapi32.dll 用户态封装层
        ↓ 系统调用 NtXxxRegistry 进入内核
ntoskrnl.exe 内核注册表管理器(CM 配置管理器)
        ↓ 磁盘持久化 hive 配置单元文件(SYSTEM、NTUSER.DAT、SOFTWARE等)

分层职责

  1. reg.exe(用户态程序)
     
    解析命令行参数(QUERY/ADD/EXPORT/LOAD等)、格式化输出文本、处理批量循环、解析.reg文本、实现备份 / 对比逻辑,不直接操作内核注册表。
  2. Advapi32.dll(Win32 API 封装层)
     
    提供标准注册表操作 API,屏蔽系统调用细节、处理权限校验、字符串转换、键值类型封装,是 reg.exe 与内核的中间桥梁。
  3. Nt*Registry 内核系统调用
     
    内核入口,所有注册表读写、创建、删除、快照、加载操作的底层统一接口。
  4. CM(Configuration Manager,内核配置管理器)
     
    Windows 内核核心组件,管理内存注册表缓存、hive 文件加载 / 卸载、权限 ACL、事务、虚拟映射,是注册表真实存储逻辑载体。
  5. Hive 磁盘文件
     
    二进制持久化存储,关机 / 重启时内核 CM 将内存注册表刷入磁盘;开机时加载至内存缓存。

二、reg.exe 执行通用底层流程(以 REG QUERY 举例)

  1. 参数解析阶段
     
    reg.exe 解析命令行参数,拆分注册表路径、键名、参数开关(/s递归、/f强制、/v指定值),校验语法合法性,语法错误直接返回退出码 1。
  2. Win32 API 调用
     
    根据子命令调用对应 Advapi32 函数:
    • 查询:RegOpenKeyExRegQueryValueExRegEnumKeyEx
    • 新增 / 修改:RegSetValueEx
    • 删除:RegDeleteValue / RegDeleteKey
    • 导出 / 导入:RegSaveKey / RegLoadKey
  3. 系统调用切入内核
     
    Advapi32 将用户态请求封装为内核系统调用,切换至 Ring0 内核模式,传入注册表句柄、路径、数据缓冲区。
  4. 内核 CM 处理逻辑
    1. 校验调用进程安全权限、ACL 访问控制;低权限进程修改HKLM系统项直接拦截,返回拒绝访问。
    2. 在内存注册表缓存中定位目标项 / 键值;若 hive 未加载(离线配置单元),返回路径不存在。
    3. 执行对应读写、枚举、快照、复制操作;涉及修改时开启内核事务,失败自动回滚。
  5. 数据回传用户态
     
    内核将读取结果、执行状态、错误码原路返回 Advapi32,再交付 reg.exe。
  6. 格式化输出 / 收尾
     
    reg.exe 将二进制数据转换为可读文本,打印至控制台;释放注册表句柄,关闭资源,返回标准退出码0(成功)/1(失败)

三、各核心子命令专属底层内核逻辑

1. 基础读写类:QUERY / ADD / DELETE / COPY

  • QUERY:内核调用NtEnumerateKeyNtQueryValueKey遍历缓存内注册表节点,递归参数/s循环枚举所有子项。
  • ADD:调用NtCreateKey创建项、NtSetValueKey写入键值,自动支持REG_SZ/DWORD/QWORD/BINARY全类型二进制写入。
  • DELETENtDeleteValueKey删除键值、NtDeleteKey递归删除空 / 带子项节点。
  • COPY:内核内存级批量复制注册表分支,不落地磁盘,性能远高于导出再导入。

2. 备份恢复:SAVE / RESTORE

  • REG SAVE:内核NtSaveKey,直接将内存完整注册表分支导出为二进制 hive 快照文件,仅包含注册表二进制结构,不做文本转译,速度极快。
  • REG RESTORENtRestoreKey,将快照覆盖写入内存注册表,会强制覆盖现有项,修改系统关键分支可直接触发蓝屏风险。

3. 离线挂载:LOAD / UNLOAD

  • REG LOAD:内核NtLoadKeyEx,读取离线磁盘SYSTEM/NTUSER.DAT hive 文件,挂载至当前注册表虚拟根路径,用于离线取证、离线镜像加固。
  • REG UNLOADNtUnloadKey,卸载离线配置单元,释放文件锁定,不卸载会导致磁盘文件占用无法拷贝。

4. 导入导出文本:EXPORT / IMPORT

  • EXPORT:用户态 reg.exe 读取内核注册表二进制数据,自行转译为人类可读.reg Unicode 文本格式,不依赖内核文本转换能力。
  • IMPORT:reg.exe 解析本地.reg文本,拆分路径、类型、数据,循环调用NtCreateKeyNtSetValueKey逐条写入内核注册表。

5. 对比与权限:COMPARE / FLAGS

  • COMPARE:双分支内核快照读取,内存逐字节对比键名、值类型、数据,区分新增 / 删除 / 修改差异。
  • FLAGSNtSetKeyInformation 修改注册表项虚拟化标志、内核保护标记,用于锁定 VBS、HVCI 等安全注册表,阻止普通进程篡改。

四、内核 CM 配置管理器核心底层机制

1. 内存缓存机制

开机时 CM 将全部 hive 文件加载至内核分页池内存,所有注册表操作优先读写内存缓存,磁盘仅做持久化落盘;关机 / 主动触发刷新时才写入 hive 文件,大幅提升读写速度。

2. ACL 权限隔离机制

每个注册表项独立绑定安全描述符 SD,内核 CM 每次操作前校验进程令牌权限:
  • HKLM系统根键仅管理员、SYSTEM 具备写入权限;普通用户仅可读。
  • HKCU当前用户配置单元仅当前用户完全控制。
     
    VBS、HVCI、CFA 相关安全注册表会添加内核级 ACL,即便 SYSTEM 权限也无法随意删除 / 篡改,对应REG FLAGS锁定能力。

3. 事务回滚机制

内核注册表支持事务,REG ADD/DELETE批量修改失败时 CM 自动回滚内存缓存,避免注册表损坏、系统蓝屏。

4. Hive 二进制存储格式

磁盘 hive 为自定义二进制 B 树结构,内核 CM 负责二进制解析、压缩、校验;reg.exe 不直接读写磁盘文件,全部通过内核中转,规避文件锁、格式解析漏洞。

5. 虚拟化重定向(UAC 虚拟化)

32 位程序访问 64 位注册表路径时,内核 CM 自动重定向至Wow6432Node分支,reg.exe 自动适配 Wow64 路径映射,无需手动区分 32/64 位节点。

五、安全相关底层特殊逻辑(VBS/HVCI/CFA 场景)

  1. 内存完整性(HVCI)保护注册表
     
    HKLM\SYSTEM\CurrentControlSet\Services\HTTP、VBS 相关注册表项受 HVCI 内核代码完整性保护:
     
    恶意未签名驱动、普通进程调用NtSetValueKey修改时,HVCI 在 VTL1 拦截内核写入操作,直接返回权限拒绝。
  2. Defender 篡改防护锁定
     
    开启篡改防护后,Defender 会为 CFA、VBS 注册表项附加内核保护标志,REG ADD/DELETE即使管理员权限也无法修改,仅能通过 Defender 策略解除锁定。
  3. 离线取证隔离
     
    REG LOAD挂载离线用户配置单元时,内核隔离离线 hive 与当前系统运行配置,修改离线注册表不会影响本机系统运行,专用于勒索病毒、Rootkit 事后溯源。

六、关键底层限制与性能特征

  1. 权限限制
     
    reg.exe 本身无权限提升能力,进程权限完全继承终端;普通 PowerShell/CMD 执行无法修改HKLM,必须右键「以管理员身份」启动,内核 CM 直接拦截低权限写入。
  2. 性能分层差异
  • SAVE/RESTORE/COPY:纯内核二进制操作,百万级节点秒级完成;
  • EXPORT/IMPORT:用户态文本转换,大批量注册表耗时更长;
  • LOAD离线加载:需磁盘 IO 读取 hive 文件,速度受磁盘性能约束。
  1. 向下兼容底层保障
     
    Advapi32、内核 Nt 注册表系统调用自 Windows 2000 至今接口未改动,reg.exe 上层参数语法保持兼容,老旧批处理脚本可直接在 Win11/Server2025 运行。
  2. 无独立内核驱动
     
    reg.exe 完全依托系统原生 Advapi32、ntoskrnl CM 组件,无额外第三方驱动,无内核加载风险,是 Server Core 无 GUI 环境唯一原生注册表操作工具。

七、与图形工具 regedit.exe 底层差异

  1. regedit:图形界面,频繁调用NtEnumerateKey实时刷新 UI,无批量备份 / 对比 / 离线加载封装逻辑;
  2. reg.exe:控制台专用,内置批量、快照、离线、对比封装逻辑,适配脚本自动化;二者底层共用同一套 Win32 API 与内核 CM 注册表管理器,数据来源完全一致。

reg.exe 完整四层调用架构链(用户态→内核→磁盘)

整体架构链路总览

plaintext
控制台输入命令(CMD/PowerShell)
        ↓
1. reg.exe 应用层(用户态,逻辑解析、格式化)
        ↓ 调用 Win32 标准注册表API
2. Advapi32.dll 系统封装层(用户态,权限、类型适配)
        ↓ 触发原生系统调用 Nt*Registry
3. ntoskrnl.exe CM配置管理器(Ring0内核层,核心注册表逻辑)
        ↓ 内核存储驱动(Cdfs/Fat/Ntfs)
4. Hive 磁盘持久化层(二进制配置单元文件)

分层详细拆解

第一层:reg.exe 顶层应用层(用户态)

文件实体C:\Windows\System32\reg.exe,原生控制台 EXE
  1. 核心职责
    • 解析命令行参数:QUERY / ADD / EXPORT / LOAD / COMPARE 等子命令、开关 /s /f /v /y
    • 校验语法、分配缓冲区、格式化控制台输出;
    • 封装特有业务逻辑:.reg文本转译、注册表分支对比、批量循环枚举、离线挂载会话管理;
    • 处理返回码、释放句柄、终端打印结果;
  2. 无底层能力:不直接操作内核、不读写磁盘 hive 文件,所有真实操作全部转发 Advapi32;
  3. 专属差异化逻辑:
    • EXPORT/IMPORT:仅 reg.exe 实现文本 <-> 二进制转换,内核无文本处理能力;
    • COMPARE:双注册表快照内存对比,上层业务逻辑;
    • SAVE/RESTORE:封装内核快照接口,做参数校验与文件覆盖判断。

第二层:Advapi32.dll Win32 API 封装层(用户态中间桥接)

文件实体advapi32.dll,Windows 基础安全服务库
  1. 对外提供标准注册表 API(reg.exe 唯一调用入口)
     
    操作场景 对应 API
    打开注册表项 RegOpenKeyExW
    读写键值 RegQueryValueExW / RegSetValueExW
    创建 / 删除项 RegCreateKeyExW / RegDeleteKeyExW
    导出二进制快照 RegSaveKeyW
    加载离线 hive RegLoadKeyW
    设置注册表保护标志 RegSetKeySecurity
  2. 中间层能力
    • 统一字符串编码转换(ANSI/Unicode);
    • 键值类型封装(REG_DWORD/REG_BINARY/REG_MULTI_SZ);
    • 基础 ACL 权限预校验;
    • Wow64 32/64 位路径自动重定向(Wow6432Node);
  3. 向下转发:将所有请求封装为内核系统调用,切换 CPU 至 Ring0。

第三层:ntoskrnl.exe CM 配置管理器(Ring0 内核核心)

CM = Configuration Manager,注册表真正内核实现,整套架构信任与权限判决核心

3.1 系统调用入口(Advapi32 ↔ CM)

Advapi32 最终调用以下原生内核服务函数:
  • NtOpenKey / NtCreateKey
  • NtQueryValueKey / NtSetValueKey
  • NtSaveKey / NtRestoreKey
  • NtLoadKeyEx / NtUnloadKey
  • NtCompareKey

3.2 CM 四大内核核心子模块

  1. 权限 ACL 校验模块
     
    每个注册表项绑定安全描述符 SD,校验进程令牌:普通用户拦截 HKLM 写入、安全注册表附加内核锁(HVCI/CFA/VBS 相关路径);
  2. 内存缓存管理器
     
    开机全量加载 hive 至内核内存池,所有读写优先操作内存,磁盘仅持久化落盘;
  3. 事务回滚模块
     
    批量修改开启内核事务,操作失败自动回滚缓存,防止注册表损坏蓝屏;
  4. Hive 解析 IO 模块
     
    管理二进制 B 树 hive 结构、内存与磁盘同步、离线单元挂载隔离。

3.3 内核安全联动链路

CM 会与 VBS/HVCI 内核驱动联动:
plaintext
CM 收到修改VBS/HVCI注册表写入请求
        ↓ 调用HVCI校验逻辑(VTL1安全层)
HVCI skci.dll 判断进程是否可信、是否触发W^X违规
        ↓ 不可信进程直接拦截,返回拒绝访问至reg.exe

第四层:磁盘 Hive 持久化层(底层存储)

CM 内核通过文件系统驱动(Ntfs.sys)读写二进制配置单元文件,reg.exe 全程不直接访问此层。
  1. 系统内置核心 hive 文件路径
    • HKLM\SYSTEMC:\Windows\System32\config\SYSTEM
    • HKLM\SOFTWAREC:\Windows\System32\config\SOFTWARE
    • 当前用户 HKCU%USERPROFILE%\NTUSER.DAT
  2. 存储特性
    • 自定义二进制 B 树结构,带校验和防篡改;
    • 内存修改延迟刷盘,关机 / 主动刷新才写入磁盘;
    • REG LOAD 可挂载离线 hive 文件(宕机取证、离线镜像加固)。

完整执行链路示例(REG ADD 写入 HVCI 注册表)

plaintext
1. PowerShell执行命令:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters" /v MaxRequestBytes /t REG_DWORD /d 65536 /f
        ↓
2. reg.exe 解析参数,校验路径、类型、强制覆盖开关/f
        ↓
3. reg.exe 调用 Advapi32.dll :: RegCreateKeyExW + RegSetValueExW
        ↓
4. Advapi32 发起系统调用 NtCreateKey / NtSetValueKey,切入Ring0内核
        ↓
5. ntoskrnl CM配置管理器:
   ① 校验进程为管理员SYSTEM令牌;
   ② 定位内存缓存内HTTP注册表项;
   ③ 联动HVCI内核校验是否允许修改该安全路径;
   ④ 开启内核事务写入DWORD值;
        ↓
6. 修改写入内核内存缓存,延迟同步至磁盘SYSTEM hive
        ↓
7. 执行结果原路逐层回传:CM → Advapi32 → reg.exe
        ↓
8. reg.exe 打印成功信息,返回退出码0

两条特殊分支架构(离线 / 文本导出)

分支 A:REG LOAD 离线挂载架构

plaintext
reg.exe → Advapi32::RegLoadKeyW → NtLoadKeyEx(内核CM)
        ↓ CM调用Ntfs.sys读取离线NTUSER.DAT/SYSTEM hive
        ↓ 挂载至虚拟注册表路径,内存隔离运行,不污染本机系统配置

分支 B:REG EXPORT 导出.reg 文本架构

plaintext
reg.exe 循环调用Advapi32枚举所有子项与键值
        ↓ 内核CM返回二进制注册表数据
        ↓ reg.exe 用户态完成二进制→Unicode .reg文本转译(内核无文本处理逻辑)
        ↓ reg.exe 写入本地文本文件,内核不参与文本生成

关键架构特征总结

  1. 分层隔离:用户态仅做业务封装,真实注册表权限、存储、校验全部由内核 CM 管控,reg.exe 无法绕过内核安全限制;
  2. 分层职责解耦:reg.exe 只管脚本自动化逻辑,Advapi32 做 API 标准化,内核 CM 做安全与存储;
  3. 安全纵深链路:注册表写入会串联 CM ACL + HVCI/VBS 内核防护双层校验,恶意程序无法仅通过 reg.exe 篡改系统安全基线;
  4. 磁盘透明隔离:上层工具全程不直接读写 hive 二进制文件,全部经过内核中转,规避文件锁、格式解析漏洞;
  5. 向下兼容底层保障:Advapi32 与 Nt 注册表系统调用架构自 Win2000 无改动,reg.exe 上层语法兼容全版本 Windows。

PixPin_2026-07-13_21-43-02

reg.exe 注册表命令工具完整解读

一、图片核心信息概述

这是 Windows 内置控制台工具 reg.exe 的帮助首页,执行 reg /? 输出,展示了该工具全部 11 个子操作、返回码规则、子命令帮助查询语法。
 
reg.exe 用于在 CMD / PowerShell 中批量读写、导出、备份、对比 Windows 注册表,常用于运维批量加固、漏洞检测、安全基线配置、恶意注册表项清理。

二、全部 11 个子操作功能说明

子命令 核心用途 典型运维 / 安全场景
REG QUERY 查询注册表项 / 值数据 批量检测后门启动项、查看 VBS/HVCI 内存完整性注册表配置
REG ADD 新增 / 修改注册表键值 一键开启受控文件夹访问 CFA、关闭 HTTP2、配置内存完整性
REG DELETE 删除注册表项 / 键值 清理勒索病毒、Rootkit 残留自启动项
REG COPY 复制注册表分支 终端批量同步安全策略模板
REG SAVE 备份注册表分支到本地文件 修改高危注册表前备份,防止蓝屏故障
REG RESTORE 从备份文件恢复注册表分支 注册表篡改故障回滚修复
REG LOAD 加载离线注册表配置单元 挂载离线系统镜像、磁盘备份的用户配置单元分析恶意项
REG UNLOAD 卸载已加载的离线注册表单元 释放离线注册表占用,避免磁盘锁定
REG COMPARE 对比两条注册表分支差异 基线巡检:对比标准安全配置与当前主机注册表偏差
REG EXPORT 导出注册表分支为 .reg 文本文件 导出安全策略批量下发多台终端
REG IMPORT 导入 .reg 注册表文件 批量导入加固基线、关闭危险服务注册表开关
REG FLAGS 管理注册表项权限标志(虚拟化、关键项保护) 锁定 VBS、CFA 安全相关注册表,防止恶意程序篡改

三、返回代码规则

  1. 通用规则(除 REG COMPARE
    • 0:命令执行成功
    • 1:执行失败(路径不存在、权限不足、参数错误、注册表锁定)
  2. REG COMPARE 特殊返回码
    • 0:两条注册表分支完全一致
    • 1:存在差异
    • 2:执行报错(路径无效、权限不足)

四、帮助查询语法

基础格式

cmd
REG 子命令 /?

示例

powershell
# 查看新增注册表键值完整参数
REG ADD /?
# 查看导出注册表参数
REG EXPORT /?
# 查看查询注册表详细用法
REG QUERY /?

五、安全运维高频实用示例

1. 查询内存完整性 HVCI 当前状态

powershell
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters" /v MaxRequestBytes

2. 一键开启受控文件夹访问 CFA 拦截模式

powershell
REG ADD "HKLM\SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\Controlled Folder Access" /v EnableControlledFolderAccess /t REG_DWORD /d 1 /f

3. 导出全部启动项注册表用于恶意程序排查

powershell
REG EXPORT "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" C:\run_backup.reg /y

4. 禁用 HTTP2 协议,缓解 http.sys 内核漏洞风险

powershell
REG ADD "HKLM:\SYSTEM\CurrentControlSet\Services\HTTP\Parameters" /v EnableHttp2Tls /t REG_DWORD /d 0 /f

5. 删除恶意自启动注册表项

powershell
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v BadMalware /f

六、使用注意事项 ⚠️

  1. 权限要求:修改 HKLM 系统根键、VBS / 安全相关注册表,必须以管理员身份运行终端;普通用户仅可读写 HKCU 当前用户配置。
  2. 风险提示:错误删除 / 修改系统内核、VBS、HVCI 相关注册表会直接导致蓝屏、系统无法启动,操作前务必 REG SAVE 备份对应分支。
  3. PowerShell 兼容reg.exe 属于原生 CMD 工具,在 PowerShell 中可直接执行,路径含空格时需用英文双引号包裹注册表路径。
  4. 离线取证REG LOAD 可挂载另一块硬盘的 NTUSER.DATSYSTEM 配置单元,用于宕机主机离线安全取证分析。

 

PixPin_2026-06-12_03-45-51

PixPin_2026-06-12_03-51-58

PixPin_2026-06-12_03-52-18

PixPin_2026-06-12_03-52-38

PixPin_2026-06-12_03-52-59

PixPin_2026-06-12_03-53-29

PixPin_2026-06-12_03-56-00

Windows CMD 终端执行 reg /? 输出的注册表命令行工具帮助首页,展示了 REG.exe 支持的全部子操作、返回码规则、细分帮助查看方式。

1. 支持的所有操作子命令

子命令 功能说明
QUERY 查询注册表项 / 键值
ADD 新增注册表项或键值
DELETE 删除注册表项或键值
COPY 复制注册表项到另一个路径
SAVE 导出指定注册表分支为 hive 配置文件
LOAD 加载离线注册表 hive 文件
UNLOAD 卸载已加载的离线注册表 hive
RESTORE 用 hive 文件还原覆盖注册表对应分支
COMPARE 对比两个注册表项差异
EXPORT 导出注册表为 .reg 文本导入导出文件
IMPORT 导入 .reg 注册表文件
FLAGS 管理注册表项的权限标志

2. 返回代码规则(除 REG COMPARE

  • 0:命令执行成功
  • 1:命令执行失败

3. 细分帮助查看语法

语法格式:
cmd
REG 子命令 /?
示例:
cmd
REG QUERY /?
REG ADD /?
输入后可查看对应子命令完整参数、用法、示例。

二、REG.exe 工具核心介绍 💡

基础定位

REG.exe 是 Windows 原生内置的注册表命令行管理工具,无需额外安装,支持批处理脚本、远程运维、自动化修改注册表,图形界面注册表编辑器(regedit.exe)能实现的绝大多数操作,它都可以在终端无交互执行。

核心使用场景

  1. 批量自动化:写 bat 脚本批量增删改注册表,批量部署系统配置;
  2. 远程运维:域环境批量修改多台终端注册表;
  3. 离线系统修复LOAD/UNLOAD 挂载硬盘离线注册表 hive,修复无法启动的系统;
  4. 日志审计EXPORT/QUERY 导出配置做备份、配置比对。

三、高频常用示例(可直接复制运行)

1. 查询注册表项

cmd
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion"

2. 新增字符串键值

cmd
REG ADD "HKCU\Software\TestConfig" /v AppPath /t REG_SZ /d "D:\test.exe" /f

3. 导出整个注册表分支为 reg 文件

cmd
REG EXPORT HKCU\Software\TestConfig D:\config.reg /y

4. 导入 reg 配置文件

cmd
REG IMPORT D:\config.reg

5. 删除指定键值(无弹窗确认)

cmd
REG DELETE "HKCU\Software\TestConfig" /v AppPath /f

四、重要安全提醒 ⚠️

  1. 修改系统关键注册表项(HKLM 分支)必须以管理员身份运行 CMD/PowerShell,普通权限会操作拒绝;
  2. 错误删除 / 修改系统注册表核心项会直接导致系统崩溃、无法开机,操作前务必先用 EXPORT 备份对应分支;
  3. 恶意程序常利用 REG ADD/IMPORT 写入启动项、劫持系统配置,运维时需监控该命令异常调用。

Windows reg 命令的详细说明:


1. 是什么?

reg 是 Windows 系统自带的命令行工具,用于直接操作注册表(Registry)。
注册表是 Windows 的核心数据库,存储了系统配置、程序设置和用户信息。
通过 reg 命令,可以无需打开注册表编辑器(regedit.exe),直接在命令行或脚本中增删改查注册表项。


2. 怎么用?

语法格式

 
cmdCopy
reg <操作类型> [参数]

常用操作类型

命令 作用 示例(简化版)
reg query 查询注册表键值 reg query "HKLM\Software\Microsoft"
reg add 添加/修改注册表项或值 reg add "HKCU\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "C:\wall.jpg"
reg delete 删除注册表项或值 reg delete "HKLM\Software\Test" /f
reg copy 复制注册表项 reg copy "HKLM\Software\App1" "HKLM\Software\App2" /s
reg export 导出注册表项到文件 reg export "HKCU\Software\App" backup.reg
reg import 从文件导入注册表项 reg import settings.reg
reg save 保存注册表项为二进制文件 reg save "HKLM\Software\App" app.hiv
reg restore 从二进制文件恢复注册表项 reg restore "HKLM\Software\App" app.hiv

详细示例

  1. 查询注册表

     
    cmdCopy
    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" /v ProgramFilesDir
    • 输出结果示例:
      ProgramFilesDir REG_SZ C:\Program Files
  2. 添加注册表值

     
    cmdCopy
    reg add "HKCU\Software\MyApp" /v "Language" /t REG_SZ /d "Chinese" /f
    • /v:值名称
    • /t:数据类型(如 REG_SZ 字符串、REG_DWORD 数值)
    • /d:数据内容
    • /f:强制覆盖(无需确认)
  3. 删除整个注册表项

     
    cmdCopy
    reg delete "HKLM\Software\ObsoleteApp" /f
  4. 导出注册表备份

     
    cmdCopy
    reg export "HKCU\Software\ImportantApp" backup.reg

3. 为什么用?

核心优势

  • 自动化操作:可通过脚本批量修改注册表(如部署系统时配置策略)。
  • 精准控制:避免手动操作注册表编辑器的误触风险。
  • 远程管理:支持操作远程计算机的注册表(需权限):
     
    cmdCopy
    reg add "\\192.168.1.100\HKLM\Software\App" /v Setting /t REG_DWORD /d 1
  • 故障修复:快速还原注册表配置(如导入备份文件)。

典型场景

  • 禁用/启用系统功能(如关闭自动更新)。
  • 修改程序默认配置(如调整软件安装路径)。
  • 修复系统错误(如重置网络设置)。
  • 部署企业策略(如统一设置 IE 主页)。

4. 注意事项

  1. 权限要求:操作 HKLM(系统级键)需以管理员身份运行命令提示符。
  2. 路径格式:注册表路径需用双引号包裹(含空格时必需)。
  3. 数据安全:修改前建议先导出备份:
     
    cmdCopy
    reg export "HKLM\Software\App" backup.reg
  4. 风险警告:错误修改注册表可能导致系统崩溃或程序异常!

5. 帮助信息

查看完整参数说明:

 
cmdCopy
reg /?
reg query /?
reg add /?

Windows reg 命令基本原理与工作原理 的深度解析:


一、注册表架构基础

  1. 树形结构

    • 根键HKEY_CLASSES_ROOTHKEY_CURRENT_USER 等预定义根节点
    • 子键:类似文件系统的目录结构(如 HKLM\SOFTWARE\Microsoft
    • 键值:存储实际数据的名称-数据类型-值三元组(如 REG_SZREG_DWORD
  2. 物理存储

    • Hive文件:注册表内容存储在 %SystemRoot%\System32\config 的二进制文件中
      • SYSTEM → HKLM\SYSTEM
      • SOFTWARE → HKLM\SOFTWARE
      • NTUSER.DAT → 用户配置(每个用户独立)

二、reg命令工作原理

1. 命令解析层

  • 参数解析:解析用户输入的路径、操作类型和数据格式
     
    cmdCopy
    reg add "HKLM\SOFTWARE\App" /v Version /t REG_DWORD /d 1
    • 路径转换:将 HKLM 转换为 HKEY_LOCAL_MACHINE 句柄
    • 数据类型验证:检查 /t 参数是否符合注册表支持的类型

2. API调用层

  • 核心依赖:通过 Advapi32.dll 调用 Windows 注册表 API
    • RegCreateKeyEx():创建/打开注册表项
    • RegSetValueEx():写入键值数据
    • RegQueryValueEx():读取键值数据
    • RegDeleteKeyEx():删除注册表项

3. 权限验证流程

  • 访问控制检查
     
    mermaidCopy
    graph TD
      A[reg.exe进程] --> B{检查ACL}
      B -->|允许| C[执行操作]
      B -->|拒绝| D[返回错误5(拒绝访问)]
    • UAC影响:普通用户操作 HKLM 时会触发虚拟化重定向
    • 特权要求:修改受保护项(如 HKLM\SAM)需 SYSTEM 权限

4. 数据持久化机制

  • 延迟写入:默认情况下修改操作会先写入内存缓存,由 RegIdleBackup 线程定期刷盘
  • 强制立即写入:使用 reg flush 命令或调用 RegFlushKey() API

三、关键技术细节

1. 注册表事务(Windows 8+)

  • 原子操作:通过 RegCreateKeyTransacted() 实现 ACID 特性
  • 回滚机制:事务失败时自动撤销所有修改

2. 跨进程同步

  • 通知机制
     
    cppCopy
    RegNotifyChangeKeyValue(hKey, TRUE, REG_NOTIFY_CHANGE_LAST_SET, NULL, FALSE);
    • 应用程序可监听注册表变更事件

3. 注册表虚拟化

  • 重定向路径:非管理员用户写入 HKLM 时实际修改 HKCU\Software\Classes\VirtualStore
  • 兼容性设计:解决旧程序权限不足问题

四、底层交互流程

 
mermaidCopy
sequenceDiagram
    participant User
    participant reg.exe
    participant Kernel
    participant HiveFile

    User->>reg.exe: reg add HKLM\... /v Data
    reg.exe->>Kernel: NtCreateKey (ObReferenceObjectByName)
    Kernel->>HiveFile: 加载Hive到内存
    reg.exe->>Kernel: NtSetValueKey
    Kernel->>HiveFile: 写入CM_HIVE内存结构
    HiveFile-->>Kernel: 确认写入
    Kernel-->>reg.exe: 返回STATUS_SUCCESS
    reg.exe-->>User: 显示操作成功

五、安全机制

  1. 内核保护

    • CmRegisterCallback():驱动可注册注册表操作回调
    • PatchGuard:防止直接修改内核注册表结构
  2. 审计日志

    • 启用 Audit Object Access 策略后记录操作事件到安全日志
  3. 加密存储

    • 使用 RtlEncryptMemory() 保护敏感数据(如 LSA 密钥)

六、性能优化

  1. 缓存机制

    • 稳定键:标记不常修改的项以跳过重复查询
    • 延迟加载:Hive 文件按需加载到内存
  2. 内存管理

    • 池分配:注册表操作使用内核非分页池内存
    • 锁优化:采用读写锁(CMHIVE->Lock)提升并发性能

掌握这些原理后,可通过 WinDbg 分析注册表操作的内核调用栈,或使用 Process Monitor 监控实时注册表活动。


Windows reg 命令的典型应用场景 及对应操作示例:


1. 系统配置优化

禁用自动更新

 
cmdCopy
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f

调整虚拟内存

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles /t REG_MULTI_SZ /d "C:\pagefile.sys 4096 8192" /f

2. 软件部署与配置

静默安装时禁用用户协议

 
cmdCopy
reg add "HKLM\SOFTWARE\MyApp" /v EULA /t REG_DWORD /d 1 /f

设置默认文件关联

 
cmdCopy
reg add "HKCR\.myext" /ve /t REG_SZ /d "MyApp.File" /f
reg add "HKCR\MyApp.File\shell\open\command" /ve /t REG_SZ /d "\"C:\Program Files\MyApp\app.exe\" \"%1\"" /f

3. 安全策略强化

禁用USB存储设备

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /v Start /t REG_DWORD /d 4 /f

关闭远程桌面

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

4. 用户环境定制

强制显示文件扩展名

 
cmdCopy
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 0 /f

禁用任务栏新闻和兴趣

 
cmdCopy
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Feeds" /v ShellFeedsTaskbarViewMode /t REG_DWORD /d 2 /f

5. 故障排除与修复

重置网络配置

 
cmdCopy
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\DHCP\Parameters" /f

修复系统文件关联

 
cmdCopy
reg add "HKCR\txtfile\shell\open\command" /ve /t REG_SZ /d "\"notepad.exe\" \"%1\"" /f

6. 企业环境管理

批量部署打印机

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\OfficePrinter" /v Port /t REG_SZ /d "IP_192.168.1.100" /f

禁用开始菜单广告

 
cmdCopy
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v DisableSearchBoxSuggestions /t REG_DWORD /d 1 /f

7. 开发者场景

禁用驱动程序签名验证

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy" /v SkuCiPolicy /t REG_DWORD /d 0 /f

调整环境变量

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t REG_EXPAND_SZ /d "C:\Java\jdk-17" /f

8. 性能调优

禁用系统动画效果

 
cmdCopy
reg add "HKCU\Control Panel\Desktop\WindowMetrics" /v MinAnimate /t REG_SZ /d 0 /f

优化固态硬盘写入

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v NtfsDisableLastAccessUpdate /t REG_DWORD /d 1 /f

最佳实践提醒

  1. 操作前备份
     
    cmdCopy
    reg export "要修改的路径" backup.reg
  2. 测试环境验证:所有操作先在虚拟机或测试机验证
  3. 权限控制:修改系统级键值需管理员权限
  4. 版本兼容性:注意不同Windows版本的注册表差异

掌握这些场景后,可通过批处理脚本或组策略(GPO)实现自动化管理。建议结合reg query命令验证修改结果。

 


PS C:\Users\Administrator> reg /?

REG Operation [Parameter List]

  Operation  [ QUERY   | ADD    | DELETE  | COPY    |
               SAVE    | LOAD   | UNLOAD  | RESTORE |
               COMPARE | EXPORT | IMPORT  | FLAGS ]

返回代码: (除了 REG COMPARE)

  0 - 成功
  1 - 失败

要得到有关某个操作的帮助,请键入:

  REG Operation /?

例如:

  REG QUERY /?

PS C:\Users\Administrator> REG QUERY /?

REG QUERY KeyName [/v [ValueName] | /ve] [/s]
          [/f Data [/k] [/d] [/c] [/e]] [/t Type] [/z] [/se Separator]
          [/reg:32 | /reg:64]

  KeyName  [\\Machine\]FullKey
           Machine - 远程机器名称,省略当前机器的默认值。在远程机器上
                     只有 HKLM 和 HKU 可用。
           FullKey - 以 ROOTKEY\SubKey 名称形式
                ROOTKEY - [ HKLM | HKCU | HKCR | HKU | HKCC ]
                SubKey  - 在选择的 ROOTKEY 下的注册表项的全名

  /v       具体的注册表项值的查询。
           如果省略,会查询该项的所有值。

           只有与 /f 开关一起指定的情况下,此开关的参数才是可选的。它指定
           只在值名称中搜索。

  /ve      查询默认值或空值名称(默认)。

  /s       循环查询所有子项和值(如 dir /s)。

  /se      为 REG_MULTI_SZ 在数据字符串中指定分隔符(长度只为 1 个字符)。
           默认分隔符为 "\0"。

  /f       指定搜索的数据或模式。
           如果字符串包含空格,请使用双引号。默认为 "*"。

  /k       指定只在项名称中搜索。

  /d       指定只在数据中搜索。

  /c       指定搜索时区分大小写。
           默认搜索为不区分大小写。

  /e       指定只返回完全匹配。
           默认是返回所有匹配。

  /t       指定注册表值数据类型。
           有效的类型是:
             REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ,
             REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE
           默认为所有类型。

  /z       详细: 显示值名称类型的数字等值。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

示例:

  REG QUERY HKLM\Software\Microsoft\ResKit /v Version
    显示注册表值 Version 的值

  REG QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s
    显示远程机器 ABC 上的、在注册表项设置下的所有子项和值

  REG QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /se #
    用 "#" 作为分隔符,显示类型为 REG_MULTI_SZ 的所有值名称的所有
    子项和值。

  REG QUERY HKLM /f SYSTEM /t REG_SZ /c /e
    以区分大小写的形式显示项、值和数据和数据类型 REG_SZ
    的、在 HKLM 更目录下的、"SYSTEM" 出现的精确次数

  REG QUERY HKCU /f 0F /d /t REG_BINARY
    显示在 HKCU 根目录下、数据类型为 REG_BINARY 的数据的项、值和
    数据的 "0F" 出现的次数。

  REG QUERY HKLM\SOFTWARE /ve
    显示在 HKLM\SOFTWARE 下的项、值和数据(默认)


  REG ADD /?

PS C:\Users\Administrator>   REG ADD /?

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
        [/reg:32 | /reg:64]

  KeyName  [\\Machine\]FullKey
           Machine  远程机器名 - 忽略默认到当前机器。远程机器上
                    只有 HKLM 和 HKU 可用。
           FullKey  ROOTKEY\SubKey
           ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
           SubKey   所选 ROOTKEY 下注册表项的完整名称。

  /v       所选项之下要添加的值名称。

  /ve      为注册表项添加空白值名称(默认)。

  /t       RegKey 数据类型
           [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |
             REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]
           如果忽略,则采用 REG_SZ。

  /s       指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符
           如果忽略,则将 "\0" 用作分隔符。

  /d       要分配给添加的注册表 ValueName 的数据。

  /f       不用提示就强行覆盖现有注册表项。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG ADD \\ABC\HKLM\Software\MyCo
    添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo

  REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
    添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

  REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
    添加一个值(名称: MRU,类型: REG_MULTI_SZ,数据: fax\0mail\0\0)

  REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%
    添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)
    注意: 在扩充字符串中使用插入符号 ( ^ )


  REG DELETE /?

PS C:\Users\Administrator>   REG DELETE /?

REG DELETE KeyName [/v ValueName | /ve | /va] [/f] [/reg:32 | /reg:64]

  KeyName    [\\Machine\]FullKey
    远程机器名 - 如果省略,默认情况下将使用当前机器。
             远程机器上只有 HKLM 和 HKU 可用。
    FullKey  ROOTKEY\SubKey
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   所选 ROOTKEY 下面的注册表项的全名。

  ValueName  所选项下面的要删除的值名称。
             如果省略,则删除该项下面的所有子项和值。

  /ve        删除空值名称的值(默认)。

  /va        删除该项下面的所有值。

  /f         不用提示,强制删除。

  /reg:32    指定应使用 32 位注册表视图访问
             注册表项。

  /reg:64    指定应使用 64 位注册表视图访问
             注册表项。

示例:

  REG DELETE HKLM\Software\MyCo\MyApp\Timeout
    删除注册表项 Timeout 及其所有子项和值

  REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU
    删除 ZODIAC 上的 MyCo 下面的注册表值 MTU


  REG COPY /?

PS C:\Users\Administrator>   REG COPY /?

REG COPY KeyName1 KeyName2 [/s] [/f] [/reg:32 | /reg:64]

  KeyName    [\\Machine\]FullKey
    Machine  远程机器名 - 如果省略,默认情况下将使用当前机器。
             远程机器上只有 HKLM 和 HKU 可用。
    FullKey  ROOTKEY\SubKey
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   所选 ROOTKEY 下的注册表项的全名。

  /s         复制所有子项和值。

  /f         不用提示,强制复制。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s
    将注册表项 MyApp 下的所有子项和值复制到注册表项 SaveMyApp

  REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1
    将 ZODIAC 上注册表项 MyCo 下的所有值复制到当前机器上的
    注册表项 MyCo1


  REG SAVE /?

PS C:\Users\Administrator>   REG SAVE /?

REG SAVE KeyName FileName [/y] [/reg:32 | /reg:64]

  KeyName    ROOTKEY\SubKey
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   所选 ROOTKEY 下的注册表项的全名。

  FileName   要保存的磁盘文件名。如果没有指定路径,文件会在调用进程的
             当前文件夹中得到创建。

  /y         不用提示就强行覆盖现有文件。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv
    将配置单元 MyApp 保存到当前文件夹中的文件 AppBkUp.hiv


  REG RESTORE /?

PS C:\Users\Administrator>   REG RESTORE /?

REG RESTORE KeyName FileName [/reg:32 | /reg:64]

  KeyName    ROOTKEY\SubKey (只是本地机器)
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   要将配置单元文件还原到的注册表项全名。
             覆盖现有项的值和子项。

  FileName   要还原的配置单元文件名。
             你必须使用 REG SAVE 来创建这个文件。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv
    还原文件 NTRKBkUp.hiv,覆盖注册表项 ResKit


  REG LOAD /?

PS C:\Users\Administrator>   REG LOAD /?

REG LOAD KeyName FileName [/reg:32 | /reg:64]

   KeyName    ROOTKEY\SubKey (只是本地机器)
    ROOTKEY  [ HKLM | HKU ]
    SubKey   要将配置单元文件加载进的注册表项名称。创建一个新的注册表项。

  FileName   要加载的配置单元文件名。
             你必须使用 REG SAVE 来创建这个文件。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG LOAD HKLM\TempHive TempHive.hiv
    将文件 TempHive.hiv 加载到注册表项 HKLM\TempHive


  REG UNLOAD /?

PS C:\Users\Administrator>   REG UNLOAD /?

REG UNLOAD KeyName

  KeyName    ROOTKEY\SubKey (只是本地机器)
    ROOTKEY  [ HKLM | HKU ]
    SubKey   要卸载的配置单元的注册表项名称。

例如:

  REG UNLOAD HKLM\TempHive
    卸载 HKLM 中的配置单元 TempHive


  REG COMPARE /?

PS C:\Users\Administrator>   REG COMPARE /?

REG COMPARE KeyName1 KeyName2 [/v ValueName | /ve] [Output] [/s]
            [/reg:32 | /reg:64]

  KeyName    [\\Machine\]FullKey
    Machine  远程机器名 - 如果省略,默认情况下将使用当前机器。
             远程机器上只有 HKLM 和 HKU 可用。
    FullKey  ROOTKEY\SubKey
             如果没有指定 FullKey2,FullKey2 则跟 FullKey1 相同。
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   所选 ROOTKEY 下的注册表项的全名。

  ValueName  所选注册表项下的要比较的值的名称。
             省略时,该项下的所有值都会得到比较。

  /ve        比较空白值名称的值(默认)。

  /s         比较所有子项和值。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

  Output     [/oa | /od | /os | /on]
             省略时,只显示不同的结果。
    /oa      显示所有不同和匹配结果。
    /od      只显示不同的结果。
    /os      只显示匹配结果。
    /on      不显示结果。

返回代码:

  0 - 成功,比较的结果相同
  1 - 失败
  2 - 成功,比较的结果不同

注意:
  每个输出行前面显示的符号定义为:
  = 表示 FullKey1 等于 FullKey2 数据
  < 指的是 FullKey1 数据,与 FullKey2 数据不同
  > 指的是 FullKey2 数据,与 Fullkey1 数据不同

例如:

  REG COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp
    将注册表项 MyApp 下的所有值跟 SaveMyApp 比较

  REG COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version
    比较注册表项 MyCo 和 MyCo1 下的值 Version

  REG COMPARE \\ZODIAC\HKLM\Software\MyCo \\. /s
    将 ZODIAC 上 HKLM\Software\MyCo 下的所有子项和值和当前机器上
    的相同项比较


  REG EXPORT /?

PS C:\Users\Administrator>   REG EXPORT /?

REG EXPORT KeyName FileName [/y] [/reg:32 | /reg:64]

  Keyname    ROOTKEY[\SubKey] (只是本地机器)。
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   所选 ROOTKEY 下的注册表项的全名。

  FileName   要导出的磁盘文件名。

  /y       不用提示就强行覆盖现有文件。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg
    将注册表项 MyApp 的所有子项和值导出到文件 AppBkUp.reg


  REG IMPORT /?

PS C:\Users\Administrator>   REG IMPORT /?

REG IMPORT FileName[/reg:32 | /reg:64]

  FileName  要导入的磁盘文件名(只是本地机器)。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

例如:

  REG IMPORT AppBkUp.reg
    从文件 AppBkUp.reg 导入注册表项


  REG FLAGS /?

PS C:\Users\Administrator>   REG FLAGS /?

REG FLAGS KeyName [QUERY |
                   SET [DONT_VIRTUALIZE] [DONT_SILENT_FAIL] [RECURSE_FLAG]]
                  [/reg:32 | /reg:64]

  Keyname    "HKLM\Software"[\SubKey] (仅限本地计算机上的这些密钥)。
    SubKey   HKLM\Software 下注册表项的全名。
  DONT_VIRTUALIZE DONT_SILENT_FAIL RECURSE_FLAG
   与 SET 一起使用;将设置在命令行上指定的标志,同时将清除没有指定的标志。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

示例:

  REG FLAGS HKLM\Software\MyCo\MyApp QUERY
    显示密钥 MyApp 的当前标志。

  REG FLAGS HKLM\Software\MyCo\MyApp SET DONT_VIRTUALIZE /s
    设置 MyApp 及其所有子密钥上的 DONT_VIRTUALIZE 标志
    (并清除 DONT_SILENT_FAIL 和 RECURSE_FLAG)


Windows reg 命令初级示例大纲,适合刚接触注册表操作的用户快速上手:


1. 基本语法

 
cmdCopy
reg [操作类型] [注册表路径] [参数]
  • 示例reg query "HKCU\Software"

2. 常用命令及示例

① 查询注册表项

 
cmdCopy
reg query "HKCU\Control Panel\Desktop" 
  • 作用:查看当前用户的桌面相关配置
  • 输出示例
     
    cmdCopy
    Wallpaper    REG_SZ    C:\Windows\web\wallpaper\windows\img0.jpg

② 添加/修改注册表值

 
cmdCopy
reg add "HKCU\Software\MyApp" /v "Theme" /t REG_SZ /d "Dark" /f
  • 参数解释
    • /v:值名称(Theme)
    • /t:数据类型(字符串 REG_SZ)
    • /d:数据内容(Dark)
    • /f:强制覆盖不提示确认

③ 删除注册表值

 
cmdCopy
reg delete "HKCU\Software\MyApp" /v "TempSetting" /f
  • 注意:删除前建议先备份!

④ 导出注册表备份

 
cmdCopy
reg export "HKCU\Software\ImportantApp" backup.reg
  • 作用:将注册表项导出为可编辑的 .reg 文件。

⑤ 导入注册表文件

 
cmdCopy
reg import settings.reg
  • 用途:快速恢复注册表配置(双击 .reg 文件也可导入)。

**3. 关键参数速查表

参数 说明 示例
/v 指定值名称(Value Name) /v "StartMenu"
/t 数据类型(Type) /t REG_DWORD
/d 数据内容(Data) /d "1"
/f 强制操作(无需确认) 删除或覆盖时使用

4. 注册表路径缩写

缩写 全称 用途
HKCU HKEY_CURRENT_USER 当前用户配置
HKLM HKEY_LOCAL_MACHINE 系统全局配置
HKCR HKEY_CLASSES_ROOT 文件关联和COM组件

5. 新手注意事项

  1. 管理员权限:操作 HKLM 需右键以管理员身份运行命令提示符。
  2. 路径引号:路径含空格时必须加双引号,如 "HKCU\My App"
  3. 备份习惯:修改前先导出备份:
     
    cmdCopy
    reg export "HKCU\Software\MyApp" myapp_backup.reg
  4. 危险操作
    • ❌ 不要随意删除 HKLM\SYSTEM 或 HKLM\SOFTWARE 下的系统关键项
    • ❌ 避免修改未知注册表项

6. 快速获取帮助

 
cmdCopy
reg /?          # 查看所有操作类型
reg add /?      # 查看 add 命令详细帮助

7. 实战练习

任务:禁用任务栏右键菜单中的“新闻和兴趣”

 
cmdCopy
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Feeds" /v "ShellFeedsTaskbarViewMode" /t REG_DWORD /d 2 /f
  • 效果:重启资源管理器后生效(无需重启系统)。

掌握这些基础操作后,可尝试通过 .bat 脚本批量处理注册表任务!


Windows reg 命令中级示例大纲,适合已掌握基础操作的用户提升注册表管理能力:


1. 高级操作类型

① 注册表权限管理

 
cmdCopy
regini.exe permissions.txt

示例文件 permissions.txt

 
Copy
HKEY_LOCAL_MACHINE\SOFTWARE\MyApp [1 5 7 17]
  • 权限代码
    1 (Administrators 完全控制)
    5 (Users 读取)
    7 (System 完全控制)
    17 (继承父项权限)

② 获取注册表项所有权

 
cmdCopy
reg takeown /hklm\software\MyApp /s
  • 参数
    /hklm 指定根键
    /s 递归操作子项

2. 远程注册表操作

 
cmdCopy
reg add "\\192.168.1.100\HKLM\Software\App" /v "LogLevel" /t REG_DWORD /d 3 /f
  • 要求
    • 远程计算机启用 Remote Registry 服务
    • 使用管理员凭据连接

3. 二进制数据处理

保存注册表为二进制文件

 
cmdCopy
reg save HKLM\SYSTEM\CurrentControlSet system_backup.hiv

从二进制文件恢复

 
cmdCopy
reg restore HKLM\SYSTEM\CurrentControlSet system_backup.hiv

4. 注册表对比工具

 
cmdCopy
reg compare "HKCU\Software\App" "HKCU\Software\App_Backup" /s /oa
  • 参数
    /s 递归比较子项
    /oa 输出所有差异项(格式:添加/修改/删除)

5. 复杂数据类型操作

扩展字符串(REG_EXPAND_SZ)

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Temp" /t REG_EXPAND_SZ /d "%%SystemRoot%%\Temp" /f

多字符串(REG_MULTI_SZ)

 
cmdCopy
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v "BlockedExtensions" /t REG_MULTI_SZ /d "exe\nbat\nmsi" /f

6. 注册表监控与审计

导出当前状态快照

 
cmdCopy
reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion Policies.reg /y

使用 PowerShell 监控变化

 
powershellCopy
$before = reg export HKCU\Software\App app_before.reg
# 进行注册表操作...
$after = reg export HKCU\Software\App app_after.reg
Compare-Object (Get-Content app_before.reg) (Get-Content app_after.reg)

7. 注册表虚拟化操作

加载其他用户的注册表配置

 
cmdCopy
reg load HKU\TempUser C:\Users\John\NTUSER.DAT

操作后卸载

 
cmdCopy
reg unload HKU\TempUser

8. 高级脚本技巧

批量修改策略设置

 
cmdCopy
@echo off
for /f "tokens=*" %%i in (computers.txt) do (
  reg add "\\%%i\HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v "DisableWindowsUpdateAccess" /t REG_DWORD /d 1 /f
)

computers.txt 内容

 
Copy
PC01
PC02
PC03

9. 注册表备份策略

全自动备份脚本

 
cmdCopy
@echo off
set date=%DATE:/=-%
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" System_%date%.reg /y
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer" User_%date%.reg /y
7z a Backup_%date%.7z *.reg
del /q *.reg

10. 故障排除技巧

检测无效注册表项

 
cmdCopy
reg query "HKLM\SOFTWARE" /s | findstr /i "error"

重置注册表权限

 
cmdCopy
reg restore HKLM\SOFTWARE\App security_backup.hiv

11. 注册表与其他工具集成

结合 WMIC 查询

 
cmdCopy
wmic /namespace:\\root\default path StdRegProv call EnumKey ^&h80000002,"SOFTWARE\Microsoft",""

通过 PowerShell 操作

 
powershellCopy
New-ItemProperty -Path "HKLM:\SOFTWARE\App" -Name "DebugMode" -Value 1 -PropertyType DWORD -Force

12. 安全注意事项

  1. ACL 审计:定期检查敏感注册表项的访问权限
     
    cmdCopy
    regedt32.exe
  2. 虚拟化保护:对关键项启用写保护
     
    cmdCopy
    reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /v "DisableRegistryTools" /t REG_DWORD /d 0 /f
  3. 日志监控:启用注册表操作审计策略(需组策略配置)

掌握这些中级技巧后,可结合自动化工具(如 Ansible、Puppet)实现企业级注册表管理。建议在测试环境中充分验证后再应用于生产环境!


Windows reg 命令高级示例大纲,涵盖企业级管理、自动化及深度定制场景:


1. 注册表事务性操作(Windows 10+)

 
cmdCopy
reg transaction add /ru "HKLM\SOFTWARE\App" /v "Config" /t REG_BINARY /d "A0B1C2"
reg transaction commit
  • 特性
    • 支持原子性操作(全部成功或回滚)
    • 需管理员权限
  • 适用场景:关键配置的批量更新

2. 注册表性能优化

禁用注册表延迟写入

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v "NtfsDisableLastAccessUpdate" /t REG_DWORD /d 1 /f

调整注册表缓存

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "RegistrySystemCache" /t REG_DWORD /d 1 /f

3. 注册表虚拟化深度控制

禁用特定应用的虚拟化

 
cmdCopy
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\App.exe" /v "DisableRegistryVirtualization" /t REG_DWORD /d 1 /f

全局关闭虚拟化

 
cmdCopy
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /v "GlobalFlag" /t REG_DWORD /d 512 /f

4. 注册表符号链接操作

 
cmdCopy
reg create "HKLM\SOFTWARE\LinkedKey" /t REG_LINK /d "\Registry\User\S-1-5-21-123456789-1234567890-123456789-500" /f
  • 用途:跨注册表根键创建软链接
  • 限制:需 SeCreateSymbolicLinkPrivilege 权限

5. 注册表热修补(Hot Patching)

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" /v "AppCompatCache" /t REG_BINARY /d "..." /f
  • 场景:动态修改运行中系统的兼容性设置
  • 风险:可能导致系统不稳定

6. 注册表与 WMI 深度集成

 
cmdCopy
wmic /namespace:\\root\default path StdRegProv call SetDWORDValue ^&h80000002,"SOFTWARE\App","DebugLevel",2
  • 优势:支持远程操作和脚本化
  • 扩展:结合 PowerShell 实现条件注册表操作
     
    powershellCopy
    Get-WmiObject -Namespace root\default -Class StdRegProv | ForEach-Object {
      $_.SetDWORDValue(2147483650, "SOFTWARE\App", "LogLevel", 3)
    }

7. 注册表版本控制

Git 集成

 
cmdCopy
reg export "HKLM\SOFTWARE\App" AppConfig.reg
git add AppConfig.reg
git commit -m "Registry snapshot $(date)"

差异回滚

 
bashCopy
diff -u old.reg new.reg | reg patch /apply

8. 注册表安全加固

启用审核策略

 
cmdCopy
reg add "HKLM\SECURITY\Policy\PolAdtEv" /v "AuditObjectAccess" /t REG_DWORD /d 3 /f

监控敏感项访问

 
cmdCopy
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableAuditPrivilege" /t REG_DWORD /d 1 /f

9. 注册表与容器化技术

Docker Windows 容器注册表隔离

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Docker\Parameters" /v "RegistryFilter" /t REG_MULTI_SZ /d "HKLM\SOFTWARE\App\Container*" /f

Hyper-V 隔离配置

 
cmdCopy
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\Storage" /v "VhdRoot" /t REG_EXPAND_SZ /d "C:\ContainerVHDs" /f

10. 注册表灾难恢复

紧急恢复控制台操作

 
cmdCopy
reg restore HKLM\SYSTEM C:\backups\system.hiv

离线注册表编辑

 
cmdCopy
reg load HKLM\TempSys C:\Windows\System32\config\SYSTEM
reg add HKLM\TempSys\ControlSet001\Services\VSS /v Start /t REG_DWORD /d 4 /f
reg unload HKLM\TempSys

11. 注册表与内核调试

启用调试注册表

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" /v "DEFAULT" /t REG_DWORD /d 0xffffffff /f

内核内存调优

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "PagedPoolSize" /t REG_DWORD /d 0xFFFFFFFF /f

12. 注册表元数据分析

查询键值存储结构

 
cmdCopy
reg query "HKLM\SOFTWARE" /v "SymbolicLinkValue" /t REG_LINK

二进制数据解析

 
powershellCopy
$data = reg query "HKLM\SAM\Domains\Account" /v F /t REG_BINARY
[System.BitConverter]::ToString($data).Replace("-","")

最佳实践

  1. 变更管理:所有操作纳入 ITIL 流程管理
  2. 灰度发布:通过组策略分阶段推送注册表变更
  3. 熔断机制:自动化脚本需包含回滚逻辑
  4. 合规审计:定期检查注册表项完整性(如使用 reg compare + 哈希校验)

掌握这些高级技巧后,可结合 CI/CD 流水线实现注册表即代码(Registry-as-Code)管理模式。建议在受控环境中充分验证!


Windows reg 命令专家级示例大纲,涵盖内核级操作、逆向工程与极端场景解决方案:


1. 注册表内存镜像操作

直接映射注册表Hive到内存

 
cmdCopy
reg save HKLM\SYSTEM \??\PhysicalMemory 
  • 原理:利用\??\PhysicalMemory路径绕过文件系统(需关闭PatchGuard)
  • 风险:可能导致BSOD,仅用于取证分析

解析Hive二进制结构

 
powershellCopy
$hive = [IO.File]::ReadAllBytes("C:\config\SYSTEM")
$baseBlock = [BitConverter]::ToInt32($hive, 0x1000)
Write-Host "Hive Root Block at 0x$($baseBlock.ToString('X8'))"

2. 注册表回调机制利用

拦截注册表操作(需驱动开发)

 
cCopy
// 内核驱动代码片段
NTSTATUS RegCallback(PVOID CallbackContext, PVOID Argument1, PVOID Argument2) {
    REG_NOTIFY_CLASS op = (REG_NOTIFY_CLASS)(ULONG_PTR)Argument1;
    if (op == RegNtPreSetValueKey) {
        // 拦截值修改操作
    }
    return STATUS_SUCCESS;
}
CmRegisterCallback(RegCallback, NULL, &g_Cookie);
  • 应用:实时监控/阻止勒索软件加密文档扩展名注册表项

3. 注册表碎片化修复

强制重建SAM Hive

 
cmdCopy
reg save HKLM\SAM sam.hiv 
reg restore HKLM\SAM sam.hiv /f /c
  • 参数
    /c 强制重建Hive结构
  • 场景:修复因长期运行导致的注册表性能下降

4. 跨用户会话注册表注入

劫持COM组件注册

 
cmdCopy
reg add "HKU\S-1-5-21-*\Software\Classes\CLSID\{CLSID}" /v AppID /t REG_SZ /d "{APPID}" /f
  • 技巧:使用通配符*匹配所有用户SID
  • 防御:启用UAC虚拟化CLSID隔离

5. 注册表与Hypervisor联动

HVCI兼容性强制注册

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /t REG_DWORD /d 1 /f
  • 底层机制:修改HVCI策略不重启生效
  • 验证
     
    powershellCopy
    Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard

6. 注册表时间线追溯

提取注册表修改历史

 
powershellCopy
$hive = Get-WmiObject -Namespace root\default -Class StdRegProv 
$hive.EnumKey(2147483650, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") | 
ForEach-Object { 
    $key = $_.sNames 
    $hive.GetDWORDValue(2147483650, "SOFTWARE\...$key", "InstallDate") 
}
  • 结合:USN Journal分析实现精准时间戳追踪

7. 注册表熵值混淆

反逆向工程保护

 
cmdCopy
reg add "HKLM\SOFTWARE\ProtectedApp" /v Config /t REG_BINARY /d (Get-Random -Count 64 -AsByteStream) /f
  • 原理:通过随机填充数据增加静态分析难度
  • 增强:结合CryptProtectMemory加密内存中的键值

8. 注册表与EFI联动

UEFI变量同步

 
cmdCopy
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot" /v UEFISettings /t REG_BINARY /d (Get-SecureBootUEFI -AsByteArray) /f
  • 要求
    • 启用Secure Boot
    • 加载UEFI驱动

9. 注册表热迁移技术

实时同步集群节点注册表

 
powershellCopy
# 主节点
reg export HKLM\Cluster /live | Out-File cluster.reg -Encoding Byte

# 从节点
while($true) {
    reg import \\Master\cluster.reg /live
    Start-Sleep -Seconds 5
}
  • 参数:虚构的/live参数示意持续同步概念
  • 实际方案:需结合WSFCSMB3持续可用性

10. 注册表极限恢复技术

从分页文件提取注册表碎片

 
cmdCopy
dd if=\\.\Pagefile.sys of=registry_fragments.bin bs=4096 
strings registry_fragments.bin | findstr "HKLM\\"
  • 原理:注册表修改残留可能存在于分页文件
  • 工具:需配合WinDbg分析内存转储

专家级防御策略

  1. 注册表指纹校验
     
    powershellCopy
    Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet | 
    Get-FileHash -Algorithm SHA256
  2. RPC注册表防火墙
     
    cmdCopy
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\RPC" /v RestrictRemoteClients /t REG_DWORD /d 1 /f
  3. 量子安全注册表(概念):
     
    cmdCopy
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v QuantumCrypto /t REG_DWORD /d 1 /f

逆向工程工具箱

  1. Hive解析工具
    • RegDumpView(解析Hive bin结构)
    • yarp + WinHex(手工分析)
  2. 实时监控工具
    • ProcMon过滤RegSetValue
    • 内核模式RegFilter驱动
  3. 模糊测试框架
     
    pythonCopy
    import winreg
    while True:
        rand_key = ''.join(random.choices(string.ascii_letters, k=8))
        winreg.CreateKey(winreg.HKEY_CURRENT_USER, rand_key)

掌握这些技术需配合:

  • Windows内核原理手册
  • ACPI/EFI规范文档
  • 硬件级调试工具(如Intel VTune)
    建议在隔离的硬件实验室环境中操作!

 

posted @ 2024-03-30 01:21  suv789  阅读(632)  评论(0)    收藏  举报