跳转到内容
新建笔记

Windows 注册表详解

注册表是 Windows 的集中配置数据库,存储了系统和所有软件的配置信息。

类比理解:

  • Linux 把配置分散存在很多 .conf 文件里(/etc/, ~/.config/ 等)
  • Windows 把绝大多数配置集中存在一个数据库里,这就是注册表

物理上它是几个二进制文件,存在 C:\Windows\System32\config\ 里,但你不能直接编辑,只能通过 API 或工具访问。


注册表是树形结构,像文件系统一样:

注册表
├── HKEY_LOCAL_MACHINE (HKLM) ← 整台电脑的设置,所有用户共享
│ ├── SOFTWARE ← 软件安装信息
│ ├── SYSTEM ← 系统硬件/驱动配置
│ └── HARDWARE ← 硬件信息
│
├── HKEY_CURRENT_USER (HKCU) ← 当前登录用户的设置
│ ├── Environment ← 用户环境变量 ← 你刚才找到的
│ ├── SOFTWARE ← 该用户的软件配置
│ └── Control Panel ← 桌面/鼠标/键盘等个人设置
│
├── HKEY_CLASSES_ROOT (HKCR) ← 文件关联(.jpg 用什么打开)
├── HKEY_USERS (HKU) ← 所有用户的配置
└── HKEY_CURRENT_CONFIG (HKCC) ← 当前硬件配置

最常用的就是 HKLM 和 HKCU 这两个。


几乎所有 Windows 软件的配置都在这里:

存储内容位置
环境变量HKCU\Environment
开机自启动程序HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件类型关联HKCR\.jpg
软件安装记录HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
右键菜单项HKCR\*\shell
网络代理设置HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings

Win + R → 输入 regedit → 回车

像文件管理器一样,左边是树,右边是键值。

终端窗口
# 读取
Get-ItemProperty "HKCU:\Environment"
# 读取单个值
(Get-ItemProperty "HKCU:\Environment").HOME
# 写入/修改
Set-ItemProperty "HKCU:\Environment" -Name "HOME" -Value "C:\Users\mtxl"
# 删除某个值
Remove-ItemProperty "HKCU:\Environment" -Name "HOME"
# 或者
[Environment]::SetEnvironmentVariable("HOME", $null, "User")
# 新建键(相当于新建文件夹)
New-Item "HKCU:\SOFTWARE\MyApp"
# 搜索(慢,但有用)
Get-ChildItem "HKCU:\" -Recurse -ErrorAction SilentlyContinue |
Get-ItemProperty -ErrorAction SilentlyContinue |
Where-Object { ($_ | Out-String) -match "关键词" }

改之前先备份:

终端窗口
# 导出某个键到文件
reg export "HKCU\Environment" "$env:USERPROFILE\Desktop\env_backup.reg"
# 恢复
reg import "$env:USERPROFILE\Desktop\env_backup.reg"

权限区别:

  • HKCU — 普通用户就能改,只影响自己
  • HKLM — 需要管理员权限,影响所有用户

不要乱改 HKLM\SYSTEM — 改错了可能导致系统无法启动。


Cadence 安装程序
↓ 写入
HKCU\Environment\HOME = D:\code\CadencePrj
↓ 被读取
claude.exe install 读到 HOME,用它计算安装路径
↓ 结果
一直往 D:\code\CadencePrj\.local\bin 安装

这就是为什么删文件没用——根源在注册表里,不在文件系统里。


来源:CSDN 原文,首次发布于 2026-03-07。