注册表是什么

注册表是 Windows 存放系统和应用配置的层级数据库。硬件驱动、用户偏好、安装路径、文件关联,几乎所有配置都在这里。开发和运维绕不开它。但注册表一旦写坏,系统可能起不来。

把注册表用顺手的关键是:先备份、再动手、用代码代替手工改键。日常调试和部署脚本大多通过注册表完成,而不是进 regedit 逐格改。

注册表 = Windows 的配置中枢,写它之前先备份。

新手一听到注册表就发怵,其实它就是一颗树,按路径找键、按名字取值。只要养成动手前先导出分支的习惯,哪怕改错了也能一键还原。

常见的两个坑:32 位程序在 64 位系统下被 WOW64 重定向到 Wow6432Node,写前先用 RegistryView.Registry64 明确视图;值类型写错(字符串当 DWORD)会让读方解析失败。

两大 hive
  • HKLM本机级、所有用户共享。
  • HKCU当前用户级、只影响本人。
Windows 注册表配图:一棵发光的树形键值层级方块,方块之间由发光连线连接,旁边悬浮一把小钥匙轮廓
树状键值层级,旁悬钥匙。

五大根键

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 双击还原。