C#如何操作注册表 C# Registry类读写Windows注册表项


答案:C#通过Microsoft.Win32.Registry和RegistryKey类操作注册表,支持读写删注册表项与值,常用根键包括CurrentUser、LocalMachine等;读取使用OpenSubKey+GetValue,写入使用CreateSubKey+SetValue并可指定RegistryValueKind类型,删除支持DeleteValue和DeleteSubKeyTree;操作需注意权限控制,修改LocalMachine需管理员权限,建议使用try-catch处理UnauthorizedAccessException等异常,防止因权限不足或项不存在导致程序崩溃。

c#如何操作注册表 c# registry类读写windows注册表项

在C#中操作Windows注册表主要通过.NET Framework提供的 Microsoft.Win32.RegistryMicrosoft.Win32.RegistryKey 类来实现。这些类位于 mscorlib.dll 中,无需额外引用,可以直接使用。通过它们可以读取、写入、创建和删除注册表项与值。

1. 常用的注册表根键

C#中定义了几个常用的注册表根键,对应注册表编辑器中的顶级节点:
  • Registry.CurrentUser - 对应 HKEY_CURRENT_USER
  • Registry.LocalMachine - 对应 HKEY_LOCAL_MACHINE
  • Registry.ClassesRoot - 对应 HKEY_CLASSES_ROOT
  • Registry.Users - 对应 HKEY_USERS
  • Registry.CurrentConfig - 对应 HKEY_CURRENT_CONFIG

2. 读取注册表项值

使用 RegistryKey.OpenSubKey() 打开一个子键,然后调用 GetValue() 方法读取指定名称的值。

// 示例:读取当前用户下的某个软件设置
using Microsoft.Win32;
<p>// 打开注册表路径(只读)
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\MyApp"))
{
if (key != null)
{
object value = key.GetValue("SettingName");
if (value != null)
{
Console.WriteLine("读取到值: " + value.ToString());
}
else
{
Console.WriteLine("值不存在");
}
}
else
{
Console.WriteLine("注册表项不存在");
}
}

3. 写入注册表项值

使用 RegistryKey.CreateSubKey() 创建或打开一个子键,再使用 SetValue() 写入数据。

// 示例:向本地机器写入应用程序配置
using Microsoft.Win32;
<p>// 创建或打开注册表项(需要管理员权限修改 LocalMachine)
using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"Software\MyApp"))
{
if (key != null)
{
key.SetValue("SettingName", "Hello Registry");
key.SetValue("Version", 1.0);
key.SetValue("Count", 100, RegistryValueKind.DWord); // 指定值类型
Console.WriteLine("写入成功");
}
}
注意:修改 Registry.LocalMachine 通常需要管理员权限,否则会抛出安全异常。

4. 删除注册表项或值

可以删除整个子键或仅删除某个值。

// 删除某个值
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\MyApp", true)) // true 表示可写
{
    if (key != null)
    {
        key.DeleteValue("SettingName", false); // false 表示值不存在也不报错
    }
}
<p>// 删除整个子键(递归删除)
Registry.CurrentUser.DeleteSubKeyTree(@"Software\MyApp", false);

5. 注册表值类型说明

SetValue() 方法支持多种注册表数据类型,可通过 RegistryValueKind 枚举指定:

会译·对照式翻译 会译·对照式翻译

会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

会译·对照式翻译 79 查看详情 会译·对照式翻译
  • String - REG_SZ,字符串
  • DWord - REG_DWORD,32位整数
  • QWord - REG_QWORD,64位整数
  • MultiString - REG_MULTI_SZ,字符串数组
  • Binary - REG_BINARY,字节数组
  • ExpandString - REG_EXPAND_SZ,包含环境变量的字符串

// 示例:写入二进制数据

byte[] data = { 0x01, 0x02, 0x03 };
key.SetValue("BinaryData", data, RegistryValueKind.Binary);

6. 权限与异常处理建议

操作注册表可能因权限不足导致失败,建议使用 try-catch 并以管理员身份运行程序。

try
{
    using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"Software\MyApp"))
    {
        key?.SetValue("Test", "TestValue");
    }
}
catch (UnauthorizedAccessException)
{
    Console.WriteLine("权限不足,无法写入注册表");
}
catch (Exception ex)
{
    Console.WriteLine("其他错误:" + ex.Message);
}

基本上就这些。掌握 Registry 类的基本用法后,就能在C#程序中灵活读写Windows注册表,用于保存配置、开机启动等功能。注意合理使用权限,避免误删系统关键项。

以上就是C#如何操作注册表 C# Registry类读写Windows注册表项的详细内容,更多请关注其它相关文章!


# windows  # app  # 字节  # word  # 有何不同  # 有什么区别  # 面试题  # 几个  # 网站谷歌关键词排名查询  # SEO是什么是闭口图片  # 天津网站推广和优化  # 合肥网站建设如何做大  # 联盟营销如何推广  # 潜江房产网站推广价格  # 看图网站建设  # 深圳高端网站优化计划  # 网站建设结构框架  # 打开注册表  # 如何选择  # 递归  # 更有  # 不存在  # 字符串  # c#  # microsoft  # win  # 环境变量  # 注册表  # mac  # access  # 对seo的认识 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: J*aScript包管理器_Npm与Yarn对比  《植物大战僵尸3》火龙草作用介绍  C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较  windows10怎么更改下载路径_windows10默认存储位置修改教程  《绝区零》2.3前瞻|直播|内容介绍  《U校园》学生登录入口2025  word表格如何按某一列内容进行排序_Word表格按列排序方法  天堂漫画网页版在线阅读 天堂漫画手机版入口  126手机126邮箱登录_126邮箱手机登录入口官网  163邮箱登录入口官网 163.com邮箱登录入口  如何在CSS中使用absolute实现登录弹窗居中_transform translate结合  优化 WooCommerce 产品价格显示与自定义短代码集成  WooCommerce购物车:强制显示所有交叉销售商品教程  Linux如何自动分析系统异常日志_Linux日志智能检测  C++ bind函数使用教程_C++参数绑定与函数适配器的应用  使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  《下一站江湖2》大雪山加入方法  《宝可梦大集结》S4冠军之路开始时间介绍  歌词怎么展示在|直播|间视频号?有什么注意事项?  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  汽车之家网页版免费登录_汽车之家官网首页直接进入  苹果手机怎么合并照片_苹果手机合并多张照片的操作方法  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  《广发易淘金》国债逆回购操作教程  Teambition网盘如何共享文件  圆通快递官网入口查询单号 手机版官方查询入口  mail.qq.com登录入口 QQ邮箱网页版直达  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧  TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法  excel怎么计算平均值 excel平均函数*ERAGE使用教学  如何高效地基于键列值映射DataFrame中的多个列  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  更换小红书群背景怎么换?小红书群规则怎么设置?  GBA模拟器手柄按键设置  在PySimpleGUI中实现键盘按键绑定按钮事件  阿里云共享相册入口在哪  小米civi如何设置锁屏时间  解决Windows上Composer PATH变量冲突导致的命令无法识别问题  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  京东快递包裹信息查询入口 京东快递官方查询平台入口  菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤  微信客户端如何找回密码_微信客户端忘记密码找回方法  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  J*a里如何处理ArithmeticException并防止除零_算术异常防护策略解析 

 2025-11-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.