首页 > 编程语言 >C#读、写、删除注册表

C#读、写、删除注册表

时间:2023-02-12 16:33:18浏览次数:65  
标签:RegistryKey 删除 C# Registry key 注册表 software

C#读、写、删除注册表

 

1.首先,必须导入空间"Microsoft.Win32" 2.利用Registry类,确定注册表的分支(ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig)

using Microsoft.Win32;

2.获取机器上的注册表

RegistryKey key = Registry.LocalMachine;

3.创建/打开/删除注册表项

RegistryKey key = Registry.LocalMachine;
//创建
//注意:注册表路径一定是"\\"而不是"\"
RegistryKey software = key.CreateSubKey("software\\MyApp");

//打开(true表示可以写入)
RegistryKey software = key.OpenSubKey("software\\MyApp",true); 
RegistryKey Product = software.CreateSubKey("Product");

//删除
key.DeleteSubKey("software\\MyApp",true);
//记得关闭,两个都要关
key.Close();
ProductID.Close();

4.创建/打开/删除键值

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("software\\My",true); 
//写入
software.SetValue("ProductID", "Leo Tian's blog"); 
//读取
string info = "";
info = software.GetValue("ProductID").ToString();
//删除
software.DeleteValue("test");
//关闭
software.Close()

5.最后贴出两个判断函数

//判断项目是否存在
private bool IsRegeditItemExist(RegistryKey RegBoot, string ItemName)
{
    if (ItemName.IndexOf("\\") <= -1)
    {
        string[] subkeyNames;
        subkeyNames = RegBoot.GetValueNames();
        foreach (string ikeyName in subkeyNames)  //遍历整个数组
        {
            if (ikeyName == ItemName) //判断子项的名称
            {
                return true;
            }
        }
        return false;               
    }
    else
    {
        string[] strkeyNames = ItemName.Split('\\');
        RegistryKey _newsubRegKey = RegBoot.OpenSubKey(strkeyNames[0]);
        string _newRegKeyName = "";
        int i;
        for(i=1;i<strkeyNames.Length;i++)
        {
            _newRegKeyName = _newRegKeyName + strkeyNames[i];
            if(i!=strkeyNames.Length-1)
            {
                _newRegKeyName = _newRegKeyName + "\\";
            }
        }
        return IsRegeditItemExist(_newsubRegKey,_newRegKeyName);
    }
}

//判断键值是否存在
private bool IsRegeditKeyExist(RegistryKey RegBoot, string RegKeyName)
{

    string[] subkeyNames;
    subkeyNames = RegBoot.GetValueNames();
    foreach (string keyName in subkeyNames)
    {

        if (keyName == RegKeyName)  //判断键值的名称
        {
            return true;
        }
    }
    return false;
}

 

标签:RegistryKey,删除,C#,Registry,key,注册表,software
From: https://www.cnblogs.com/funiyi816/p/17114035.html

相关文章

  • 联想 lenovo X380 电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板lenovoX380处理器i78565U已驱动内存32GB(铭瑄DDR42666MHz16GBx2)已驱动硬盘PM981(已更换970EVO)已驱动显卡UHD620已驱动声卡瑞昱@英特尔Hi......
  • C语言学习:读写一行字符
    1#include<stdio.h>2#include<io_utils.h>3#include<errno.h>4#include<string.h>56voidReadFile1(){7FILE*file=fopen("CMakeLists.txt"......
  • centos7部署redis
    参考文档https://redis.io/docs/getting-started/installation/install-redis-from-source/https://blog.csdn.net/weixin_45550937/article/details/1240920771、安......
  • spring mvc笔记
    https://blog.csdn.net/weixin_45581692/article/details/127258639?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167618955116800184175434%2522%252C%2522......
  • CesiumJS PrimitiveAPI 高级着色入门 - 从参数化几何与 Fabric 材质到着色器 - 上篇
    目录0.基础0.1.坐标系基础0.2.合并批次1.参数化几何1.1.几何类清单1.2.举例1.3.纯手搓几何1.4.*子线程异步生成几何2.使用材质2.1.外观API2.2.材质API2.3.Fa......
  • C语言学习:复制文件
     1#include<stdio.h>2#include<io_utils.h>3#include<errno.h>4#include<string.h>56#defineCOPY_SUCCESS07#defineCOPY_ILLEGAL_ARGUMENT......
  • C语言填空:小球下落距离
    #include<stdio.h>//一个小球从100米高度自由下落,每次落地后反跳回原来高度的一半,再下落,//求它在第十次下落地时,共经过多少米,第十次反弹多高?main(){float【1......
  • Flask算pin rce
    前提条件:Debug开启高版本importhashlibfromitertoolsimportchainprobably_public_bits=['root'#/etc/passwd'flask.app',#默认值'Flask......
  • LeetCode回溯算法
    回溯模板1privatevoidbacktrack("原始参数"){2//终止条件(递归必须要有终止条件)3if("终止条件"){4//一些逻辑操作(可有可无,视情况而定)......
  • 传输层--TCP
    TCP概述:点对点可靠的,按序的字节流流水线机制发送方接受方缓存全双工面向连接 TCP流量控制:上层应用肯定会为每一个TCP连接分配buffer,每次将buffer的余量作为头......