注册表是什么
注册表是 Windows 存放系统和应用配置的层级数据库。硬件驱动、用户偏好、安装路径、文件关联,几乎所有配置都在这里。开发和运维绕不开它。但注册表一旦写坏,系统可能起不来。
把注册表用顺手的关键是:先备份、再动手、用代码代替手工改键。日常调试和部署脚本大多通过注册表完成,而不是进 regedit 逐格改。
注册表 = Windows 的配置中枢,写它之前先备份。
新手一听到注册表就发怵,其实它就是一颗树,按路径找键、按名字取值。只要养成动手前先导出分支的习惯,哪怕改错了也能一键还原。
常见的两个坑:32 位程序在 64 位系统下被 WOW64 重定向到 Wow6432Node,写前先用 RegistryView.Registry64 明确视图;值类型写错(字符串当 DWORD)会让读方解析失败。
- HKLM本机级、所有用户共享。
- HKCU当前用户级、只影响本人。
五大根键
HKLM、HKCU、HKCR、HKU、HKCC 是五大根键。日常最常用 HKLM(机器级)和 HKCU(用户级)。HKCR 管文件关联,HKU 是所有用户的 hive,HKCC 是当前硬件配置。
regedit 安全操作
regedit 是图形化编辑器。上手第一件事是「文件 → 导出」,把要改的分支先存成 .reg 文件。改坏了双击 .reg 就能导回。切勿直接删整棵根键。
C# 读写注册表
用 Microsoft.Win32 命名空间读写。读写 HKLM 需要管理员权限;HKCU 普通用户即可。部署安装包时把产品配置写到 HKLM\Software\公司名\产品名。
using Microsoft.Win32;
using var key = Registry.CurrentUser.CreateSubKey(@"Software\MyApp");
key.SetValue("LastVersion","1.2.3");
string v = key.GetValue("LastVersion","")?.ToString();
备份与回滚
动手前先导出整个分支。.reg 文件本质是文本,出问题双击导回即可。脚本批量改的时候,每改一处先记日志,再决定要不要回滚。
- 先备份导出目标分支。
- 权限HKLM 要管理员。
- 脚本用代码代替手工。
- 回滚.reg 双击还原。
常见坑
32 位程序在 64 位系统下被重定向到 Wow6432Node。写路径前用 RegistryView.Registry64 明确视图。值类型写错(字符串当 DWORD)会让读方解析失败。
小结与延伸阅读
注册表是 Windows 配置中枢,用得好是利器,用不好是地雷。养成「先备份、再代码改、最后回归」的习惯,系统配置就能稳。
- 调试诊断读《Windows 调试与诊断实战》。
- WSL2 开发环境读《WSL2 开发环境实战》。
- 系统服务读《Windows 服务与系统编程实战》。