贝利信息

C# 如何使用Windows注册表 - Registry和RegistryKey类

日期:2026-01-25 00:00 / 作者:煙雲
答案:在C#中通过Registry和RegistryKey类操作注册表,Registry提供根键访问入口,RegistryKey用于打开、创建、读写子项;使用OpenSubKey或CreateSubKey获取RegistryKey实例,推荐前者避免误创建;通过GetString、G

etInt32等方法安全读取值,SetValue配合RegistryValueKind确保类型正确;注意权限问题,写HKLM需管理员权限,建议使用using语句管理资源释放,防止句柄泄漏。

在 C# 中操作 Windows 注册表,主要通过 RegistryRegistryKey 两个类完成。前者是静态类,提供对根键(如 HKEY_LOCAL_MACHINE)的访问入口;后者代表一个具体的注册表项,支持读、写、创建、删除等操作。

获取根键并打开子项

Registry 类封装了所有预定义的根键,比如 Registry.LocalMachine、Registry.CurrentUser。注意:它们本身不是 RegistryKey 实例,而是用来获取初始 RegistryKey 的“起点”。

读取和写入注册表值

RegistryKey 提供了类型化的方法读写值,例如 GetValue("Name") 返回 object,而 GetInt32("Name")GetString("Name") 等会自动转换并抛出异常(如果类型不匹配或值不存在)。

权限与异常处理很关键

注册表操作极易因权限不足失败,尤其写入 HKEY_LOCAL_MACHINE 或系统级路径时。普通用户默认无权修改大多数 HKLM 下的项。

记得关闭或释放 RegistryKey

RegistryKey 实现了 IDisposable,虽然 .NET 会自动回收,但显式调用 Close() 或用 using 语句更稳妥,尤其在频繁操作或长期运行服务中。

基本上就这些。注册表操作不复杂但容易忽略权限和类型细节,用对方法、加好异常处理、选对根键,就能稳定工作。