C#操作注册表的方法

news2024/11/25 0:34:59

        注册表是Microsoft Windows操作系统中的一个重要组成部分,用于存储和管理系统和应用程序的配置信息。它是一个层次结构的数据库,以树形结构组织,类似于文件系统中的文件夹和文件。
        注册表存储了许多与操作系统和软件相关的信息,包括系统设置、用户配置、软件安装信息、硬件驱动程序和设备设置等。通过注册表,操作系统和应用程序可以快速访问和检索这些配置信息,以便正确运行和与其他组件进行通信。
        注册表由若干个键(Key)和键值(Value)组成。每个键都代表一个路径,类似于文件系统中的文件夹路径。键可以包含其他子键和键值,这样就形成了一个层次结构。键值则存储了具体的配置数据,可以是文本、二进制、整数等不同类型的数据。
        在Windows操作系统中,用户和应用程序可以通过注册表编辑器(Registry Editor)来查看和修改注册表内容。然而,直接在注册表中进行修改需要谨慎,因为错误的修改可能会导致系统不稳定或软件无法正常工作。


在这里插入图片描述

目录

    • 一、创建注册表项
    • 二、打开注册表项
    • 三、删除注册表项
    • 四、创建和修改键值
    • 五、读取键值
    • 六、删除键值
    • 七、判断注册表项是否存在
    • 八、判断键值是否存在


一、创建注册表项

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.CreateSubKey("SOFTWARE\\Test");
  • 示例中在HKEY_LOCAL_MACHINE\SOFTWARE下创建一个名为"Test"的注册表项。

二、打开注册表项

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE\\Test", true);
  • 调用OpenSubKey()方法时,如果注册表项不存在,将抛出异常。

三、删除注册表项

RegistryKey key = Registry.LocalMachine;
key.DeleteSubKey("SOFTWARE\\Test", true);
key.Close();
  • 调用DeleteSubKey()方法时,如果注册表项不存在,将抛出异常。

四、创建和修改键值

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE\\Test", true);
software.SetValue("ValueName", "Test Data", RegistryValueKind.String);
software.Close();
  • 示例中在HKEY_LOCAL_MACHINE\SOFTWARE\Test下创建了名为"ValueName"的字符串键值。

五、读取键值

string value = "";
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE\\Test");
value = software.GetValue("ValueName").ToString();
software.Close();

六、删除键值

RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Test", true);
key.DeleteValue("ValueName");
key.Close();

七、判断注册表项是否存在

private bool IsRegeditItemExist()
{
    string[] subkeyNames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE");
    subkeyNames = software.GetSubKeyNames();
    foreach (string keyName in subkeyNames)
    {
        if (keyName == "Test")
        {
            hkml.Close();
            return true;
        }
    }
    hkml.Close();
    return false;
}

八、判断键值是否存在

private bool IsRegeditKeyExist()
{
    string[] valueNames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE\\Test");
    valueNames = software.GetValueNames();
    foreach (string valueName in valueNames)
    {
        if (valueName == "ValueName")
        {
            hkml.Close();
            return true;
        }
    }
    hkml.Close();
    return false;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1193785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享Python的十大库,这你一定得知道!

文章目录 前言关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言 Python为我们提供了非常完善的基础库&#…

黑马程序员微服务SpringCloud实用篇02

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我…

力扣876:链表的中间结点

力扣876:链表的中间结点 题目描述: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5]…

计算机是如何进行工作的+进程和线程

一)计算机是如何工作的? 指令是如何执行的?CPU基本工作过程? 假设上面有一些指令表,假设CPU上面有两个寄存器A的编号是00,B的编号是01 1)第一个指令0010 1010,这个指令的意思就是说把1010地址上面的数据给他读取到A寄存器里面 2…

【C++】异常 智能指针

C异常 & 智能指针 1.C异常1.1.异常的抛出与捕获1.2.异常体系1.3.异常安全与规范1.4.异常优缺点 2.智能指针2.1.RAII2.2.智能指针的使用及原理2.2.1.auto_ptr2.2.2.unique_ptr2.2.3.shared_ptr2.2.4.shared_ptr的循环引用问题 & weak_ptr 2.3.定制删除器 1.C异常 C异常…

《算法通关村——二分查找在旋转数字中的应用》

《算法通关村——二分查找在旋转数字中的应用》 这里我们直接通过一个题目,来了解二分查找的应用。 153. 寻找旋转排序数组中的最小值 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如&a…

Netty入门指南之NIO 网络编程

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言基础扫…

浅聊反射系数——为何有共轭?

文章目录 1、基于行波理论的行波反射系数2、共轭匹配与功率波反射系数3、总结 不知道大家是否有和我一样,有下列疑惑:为什么反射系数定义中分子有的时候存在共轭,有的时候又没有共轭。比如: 通俗解释就是:一般来说&…

AD教程 (十一)封装的统一管理

AD教程 (十一)封装的统一管理 PCB封装添加 一个一个手动添加,效率太低,不建议使用 使用封装管理器快速添加,根据BOM表(元器件清单),修改PCB封装 点击工具,选择封装管理器,进入封装…

MSVCP140_CODECVT_IDS.dll丢失怎么办?推荐三个解决方法帮你解决

MSVCP140_CODECVT_IDS.dll是Microsoft Visual C 2015 Redistributable的一个组件,它包含了一些运行时库文件。当您在运行某些程序时,可能会遇到“msvcp140_codecvt_ids.dll丢失”的错误提示。为了解决这个问题,您可以尝试以下三种方法&#x…

Flutter笔记:绘图示例 - 一个简单的(Canvas )时钟应用

Flutter笔记 绘图示例 - 一个简单的(Canvas )时钟应用 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_2855…

kubernetes istio

目录 一、部署 二、部署示例应用 三、部署遥测组件 四、流量管理 五、熔断 官网:https://istio.io/latest/zh/about/service-mesh/ 一、部署 提前准备好文件 tar zxf 15t10-1.19.3-linux-amd64.tar.gz cd 15t10-1.19.3/ export PATH$PWD/bin:$PATHistioctl install …

一篇文章让你了解Java中的继承

目录 继承一.什么是继承二.为什么要使用继承三.继承的语法四.继承中有重复怎么办?1.**访问原则** 五.super和this1.**this**2.**super**3.**super注意事项**4.**super和this异同点**六.构造方法的引入1.父类不带参数的构造方法2.父类带有参数的构造方法 七.继承中的…

基于Docker容器DevOps应用方案

文章目录 基于docker容器DevOps应用方案环境基础配置1.所有主机永久关闭防火墙和selinux2.配置yum源3.docker的安装教程 配置主机名与IP地址解析部署gitlab.server主机1.安装gitlab2.配置gitlab3.破解管理员密码4.验证web页面 部署jenkins.server主机1.部署tomcat2.安装jenkins…

计算机技术专业CSIT883系统分析与项目管理介绍

文章目录 前言一、学科学习成果二、使用步骤三、最低出勤要求四、讲座时间表五、项目管理 前言 本课程介绍了信息系统开发中的技术和技术,以及与管理信息技术项目的任务相关的方法和过程。 它研究了系统分析师、客户和用户在系统开发生命周期中的互补角色。 它涵盖…

基于SSM的中学课内小说阅读与学习系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

关于Maven中pom.xml文件不报错但无法导包解决方法

问题 我的pom文件没有报红&#xff0c;但是依赖无法正常导入。 右下角还总出现这种问题。 点开查看报错日志。大致如下 1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method <init>()V no…

【数据结构】树与二叉树(九):二叉树的后序遍历(非递归算法NPO)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

【考研数据结构代码题4】求树中度为1的结点数(递归方式)

题目&#xff1a;用C语言描述树的孩子兄弟链表结构&#xff0c;并编写递归程序求树中度为1的结点数 难度&#xff1a;★★ 算法思路&#xff1a;递归地遍历当前结点的左孩子子树与右兄弟子树&#xff0c;分别求二者中度为1的结点数记为h1,h2,若当前结点仅有1个结点&#xff0c;…

好用的vscode插件

一、代码管理 git GitLens — Git supercharged Git History gitignore 项目管理 Project Manager 管理多个项目 Todo Tree 快速定位代码中的todo WakaTime 用于在编程活动中自动统计工作量、代码提交和时间跟踪等 VS Code Counter 该插件用于帮助我们统计项目代码的行数…