【笔记】Windows注册表管理

前言

Windows注册表管理

通过注册表编辑器管理注册表

  • 运行->regedit

通过CMD管理注册表

新增或修改注册表键值

  • 自动创建项

<root_key>:根键

HKEY_CLASSES_ROOTHKCR:文件关联
HKEY_CURRENT_USERHKCU:当前用户配置
HKEY_LOCAL_MACHINEHKLM:本机系统配置
HKEY_USERSHKU:本机所有用户配置
HKEY_CURRENT_CONFIGHKCC:当前硬件配置

<key_src>:项路径
/v <value_name>:指定键名
/t <value_type>:指定键值类型

REG_SZ:字符串值
REG_BINARY:二进制值
REG_DWORD:32位数值
REG_QWORD:64位数值
REG_MULTI_SZ:多字符串值,每行一个字符串值
REG_EXPAND_SZ:可展开环境变量字符串,读取它的程序通常会将%环境变量名%展开

/d <value_data>:指定键值
/f:强制执行,不再弹确认

1
reg add "<root_key>\<key_src>" /v <value_name> /t <value_type> /d <value_data> /f

/ve:操作项的默认值

1
reg add "<root_key>\<key_src>" /ve /d <value_data> /f

删除注册表指定键值对

1
reg delete "<root_key>\<key_src>" /v <value_name> /f
1
reg delete "<root_key>\<key_src>" /ve /f

删除注册表项

  • 包括子项及其所有键值对
1
reg delete "<root_key>\<key_src>" /f

查询注册表指定键值

1
reg query "<root_key>\<key_src>" /v <value_name>
1
reg query "<root_key>\<key_src>" /ve

通过PowerShell管理注册表

新增注册表项

1
New-Item -Path '<root_key>:\<key_src>' -Force

修改注册表项的默认值

1
Set-Item -Path '<root_key>:\<key_src>' -Value '<default_value>'

新增或修改注册表键值

-PropertyType <value_type>:指定键值类型

String:字符串值
Binary:二进制值
DWord:32位数值
QWord:64位数值
MultiString:多字符串值,每行一个字符串值
ExpandString:可展开环境变量字符串,读取它的程序通常会将%环境变量名%展开

-Force:值已存在时覆盖

1
New-ItemProperty -Path '<root_key>:\<key_src>' -Name '<value_name>' -PropertyType <value_type> -Value <value_data> -Force

删除注册表指定键值对

1
Remove-ItemProperty -Path '<root_key>:\<key_src>' -Name '<value_name>'

删除注册表项

  • 包括子项及其所有键值对
1
Remove-Item -Path '<root_key>:\<key_src>' -Recurse -Force

查询注册表指定键值

1
Get-ItemPropertyValue -Path '<root_key>:\<key_src>' -Name '<value_name>'

通过inf文件管理注册表

<value_type>:指定键值类型,.inf文件中不能定义64位数值作为值

%REG_SZ%0x00000000:字符串值
%REG_BINARY%0x00000001:二进制值
%REG_DWORD%0x00010001:32位数值
%REG_MULTI_SZ%0x00010000:多字符串值,每行一个字符串值
%REG_EXPAND_SZ%0x00020000:可展开环境变量字符串,读取它的程序通常会将%环境变量名%展开

ADDREG=:定义需要执行新增或修改操作的配置名
DELREG=:定义需要执行删除操作的配置名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[Version]
Signature=$Windows NT$

[DefaultInstall]
ADDREG=配置名1
DELREG=配置名2

[配置名1]
; 修改注册表项的默认值
<key_root>,"<key_src>",,<value_type>,"<default_value>"
; 新增或修改注册表键值
<key_root>,"<key_src>","<value_name>",<value_type>,"<value_data>"

[配置名2]
; 删除注册表项,包括子项及其所有键值对
<key_root>,"<key_src>"
; 删除注册表项内所有键值对
<key_root>,"<key_src>\"
; 删除注册表指定键值对
<key_root>,"<key_src>\",<value_name>
  • 右键->安装

通过reg文件管理注册表

  • .reg文件编码使用UTF-16 LE,避免中文乱码
  • .reg文件中通过""定义的字符串中出现的特殊字符需要通过\转义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Windows Registry Editor Version 5.00

; 新增或修改注册表键值
[<key_root>\<key_src>]
; 修改注册表项的默认值
@="<default_value>"
; 新增或修改注册表键值
"<value_name_1>"="<value_data>"
"<value_name_2>"=dword:00000001
"<value_name_3>"="hex(2):00,00,00,00"
"<value_name_4>"="hex:00"

; 删除注册表项
[-<key_root>\<key_src>\DelAllItem]

; 删除注册表项内所有键值对
[<key_root>\<key_src>\ClearValOnly]
; 清空注册表项的默认值
@=-
; 删除注册表项内所有键值对
"<value_name_1>"=-
"<value_name_2>"=-
"<value_name_3>"=-
"<value_name_4>"=-

; 删除注册表指定键值对
[<key_root>\<key_src>\DelSingleVal]
"<value_name_1>"=-
  • 右键->合并

通过IPC远程管理注册表

建立连接

<ip>:远程IP地址
<username>:用户名
<password>:密码

1
net use \\<ip>\ipc$ <password> /user:<username>

通过服务允许远程管理注册表

1
2
sc \\<ip> config remoteregistry start=auto
sc \\<ip> start remoteregistry

管理注册表

传送门

完成

参考文献

少数派——Levinson
西瓜视频——爱比较
西瓜视频——爱比较