广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#操作注册表的方法
  • 226
分享到

C#操作注册表的方法

2024-04-02 19:04:59 226人浏览 薄情痞子
摘要

目录一、注册表操作简介注册表巢ReGIStry静态类RegistryKey类二、注册表项的创建、打开、删除1、创建,CreateSubKey2、打开,OpenSubKey3、删除,D

一、注册表操作简介

Registry类,RegistryKey类提供了操作注册表的接口

RegistryValueKind:用于指定操作注册表的数据类型

注册表巢

在注册表中,最上面的节点是注册表巢(registry Hive)。

  • HKEY_CLASSES_ROOT(HKCR)    包含系统文件类型的细节,以及应用程序可以打开的文件类型,它还包含所有COM组件的注册信息。
  • HKEY_CURRENT_USER(HKCU)    包含用户目前登陆的机器的用户配置,包括桌面设置、环境变量、网络和打印机连接和其他定义用户操作环境的变量。
  • HKEY_LOCAL_MacHINE(HKLM)    是一个很大的巢,其中包含所有安装到机器上的软件和硬件的信息。
  • HKEY_USERS(HKUSR)                包含所有用户的用户配置。
  • HKEY_CURRENT_CONFIG(HKCF)  包含机器上硬件的信息。

Registry静态类

Registry类封装了注册表的七个基本主键:

  • Registry.ClassesRoot: 对应于HKEY_CLASSES_ROOT主键
  • Registry.CurrentUser:对应于HKEY_CURRENT_USER主键
  • Registry.LocalMachine:对应于 HKEY_LOCAL_MACHINE主键
  • Registry.User:对应于 HKEY_USER主键
  • Registry.CurrentConfig:对应于HEKY_CURRENT_CONFIG主键
  • Registry.DynDa :对应于HKEY_DYN_DATA主键
  • Registry.PerfORManceData:对应于HKEY_PERFORMANCE_DATA主键
const string KeyName = "HKEY_CURRENT_USER\\Example";
Registry.SetValue(keyName, "", 5280);//默认名称
Registry.SetValue(keyName, "TestLong", 1234567, RegistryValueKind.QWord);
int i = (int)Registry.GetValue(keyName, "", -1);//默认值
long l = (long)Registry.GetValue(keyName, "TestLong", long.MinValue);

RegistryKey类

RegistryKey类封装了对注册表的基本操作。包括读、写、删等操作的常用函数:

  • Name:键的名称(只读)
  • SubKeyCount:键的子键个数
  • ValueCount:键包含的值的个数
  • Close():关闭键
  • CreateSubKey():创建给定名称的子键
  • DeleteSubKey():删除指定的子键
  • DeleteSubKeyTree():递归删除子键及其所有的子键
  • DeleteValue():从键中删除一个指定的值
  • GetAccessControl():返回指定注册表键的访问控制表
  • GetSubKeyNames():返回包含子键名称的字符串数组
  • GetValue():返回指定的值
  • GetValueKind();返回指定的值,检索其注册表数据类型
  • GetValueNames():返回一个包含所有键值名称的字符串数组
  • OpenSubKey():返回表示给定子键的RegistryKey实例引用
  • SetAccessControl():把访问控制表(ACL)应用于指定的注册表键
  • SetValue();设置指定的值

二、注册表项的创建、打开、删除

1、创建,CreateSubKey

//使用CreateSubKey()在SOFTWARE下创建子项test
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.CreateSubKey(@"SOFTWARE\test");
hklm.Close();
hkSoftWare.Close();

2、打开,OpenSubKey

//使用OpenSubKey()打开项,获得RegistryKey对象,当路径不存在时,为Null。第二个参数为true,表示可写,可读,可删;省略时只能读。
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);
hklm.Close();
hkSoftWare.Close();

3、删除,DeleteSubKey

//主要用到了DeleteSubKey(),删除test项
RegistryKey hklm = Registry.LocalMachine;
hklm.DeleteSubKey(@"SOFTWARE\test", true);  //为true时,删除的注册表不存在时抛出异常;当为false时不抛出异常。
hklm.Close();

三、注册表键值的创建、打开和删除

1、创建,SetValue

//主要用到了SetValue(),表示在test下创建名称为Name,值为RegistryTest的键值。第三个参数表示键值类型,省略时,默认为字符串
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);
hkSoftWare.SetValue("Name", "RegistryTest", RegistryValueKind.String);
hklm.Close();
hkSoftWare.Close();

2、打开,GetValue

//主要用到了GetValue(),获得名称为"Name"的键值
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);
string sValue = hkSoftWare.GetValue("Name").ToString();
hklm.Close();
hkSoftWare.Close();

3、删除,DeleteValue

//主要用到了DeleteValue(),表示删除名称为"Name"的键值,第二个参数表示是否抛出异常
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);
hkSoftWare.DeleteValue("Name", true);
hklm.Close();
hkSoftWare.Close();

四、例子:

1、判断注册表项、注册表键值是否存在

        //判断注册表项是否存在
        private bool IsRegistryKeyExist(string sKeyName)
        {
            string[] sKeyNameColl;
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE");
            sKeyNameColl = hkSoftWare.GetSubKeyNames(); //获取SOFTWARE下所有的子项
            foreach (string sName in sKeyNameColl)
            {
                if (sName == sKeyName)
                {
                    hklm.Close();
                    hkSoftWare.Close();
                    return true;
                }
            }
            hklm.Close();
            hkSoftWare.Close();
            return false;
        }


        //判断键值是否存在
        private bool IsRegistryValueNameExist(string sValueName)
        {
            string[] sValueNameColl;
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkTest = hklm.OpenSubKey(@"SOFTWARE\test");
            sValueNameColl = hkTest.GetValueNames(); //获取test下所有键值的名称
            foreach (string sName in sValueNameColl)
            {
                if (sName == sValueName)
                {
                    hklm.Close();
                    hkTest.Close();
                    return true;
                }
            }
            hklm.Close();
            hkTest.Close();
            return false;
        }

2、程序自启动程序

//开启程序自启动
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\windows\CurrentVersion\Run");
rk2.SetValue("JcShutdown", path);
rk2.Close();
rk.Close();

//关闭程序自启动
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
rk2.DeleteValue("JcShutdown", false);
rk2.Close();
rk.Close();

五、打开远程注册表

RegistryKey baseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine,"192.168.0.2");
RegistryKey softwareKey = key.OpenSubKey("software\\test");
softwareKey.Close();
baseKey.Close();

到此这篇关于C#操作注册表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#操作注册表的方法

本文链接: https://www.lsjlt.com/news/148726.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#操作注册表的方法
    目录一、注册表操作简介注册表巢Registry静态类RegistryKey类二、注册表项的创建、打开、删除1、创建,CreateSubKey2、打开,OpenSubKey3、删除,D...
    99+
    2022-11-13
  • C#实现操作注册表的方法
    这篇文章主要介绍“C#实现操作注册表的方法”,在日常操作中,相信很多人在C#实现操作注册表的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#实现操作注册表的方法”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-18
  • C# 操作Windows注册表的实现方法
    目录代码示例示例一:禁用 Windows 7 系统自动更新示例二:禁用 Windows 10 提醒常见问题本文将给出操作注册表的C#代码以及开发中遇到的问题。 代码示例 通过Regi...
    99+
    2022-11-13
  • python3操作注册表的方法(Url protocol)
    使用python操作注册表的方法最近学习了一下,现在做一下笔记,由于对Python语言的使用还不是很熟练,所以写不出高大上的结构,但是解决问题搓搓有余了。 说道注册表顺便也说一说环境变量的修改(放下下一节讲),里面有许多...
    99+
    2022-06-04
    python3注册表
  • .NET5实现操作注册表的方法
    关于注册表 注册表是存储设备,用于提供有关应用程序、用户和默认系统设置的信息。 例如,应用程序可以使用注册表存储需要在应用程序关闭后保留的信息,并在重新加载应用程序时访问相同的信息。...
    99+
    2022-11-13
  • C#操作注册表之RegistryKey类
    表示 Windows 注册表中的项级节点。 此类是注册表封装。 继承层次结构 System.Object   System.MarshalBy...
    99+
    2022-11-13
  • C#操作注册表之Registry类
    提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。 继承层次结构 Syste...
    99+
    2022-11-13
  • C#中怎么操作注册表
    这篇文章将为大家详细讲解有关C#中怎么操作注册表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。要操作注册表,我们必须要引入必要的命名空间:using Microsoft.Win32...
    99+
    2023-06-17
  • C#操作注册表实例分析
    这篇文章主要讲解了“C#操作注册表实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作注册表实例分析”吧!在下面的例子里,要注意:建项函数:CreateSubKey()建子键函数:...
    99+
    2023-06-18
  • bat与注册表操作的方法有哪些
    本篇内容主要讲解“bat与注册表操作的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“bat与注册表操作的方法有哪些”吧!bat(批处理)操作注册表的方法,我知道的应该有两种1,结合用r...
    99+
    2023-06-09
  • C#中操作注册表常用方法与函数有哪些
    这篇文章主要介绍“C#中操作注册表常用方法与函数有哪些”,在日常操作中,相信很多人在C#中操作注册表常用方法与函数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中操作注册表常用方法与函数有哪些”的疑...
    99+
    2023-06-17
  • C#中操作注册表的主键有哪些
    本篇内容介绍了“C#中操作注册表的主键有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#中操作注册表的五大主键:Windows 操作系...
    99+
    2023-06-17
  • C#操作注册表之Registry类怎么用
    这篇文章主要介绍“C#操作注册表之Registry类怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#操作注册表之Registry类怎么用”文章能帮助大家解决问题。提供表示 Windows 注...
    99+
    2023-06-30
  • C#中怎么对注册表进行删除操作
    本篇文章给大家分享的是有关C#中怎么对注册表进行删除操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。删除注册表中指定的注册表项private void D...
    99+
    2023-06-18
  • C#中怎么对注册表进行写入操作
    这期内容当中小编将会给大家带来有关C#中怎么对注册表进行写入操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。向注册表中写数据 private void WTRegedit(...
    99+
    2023-06-17
  • C#中怎么对注册表进行读取操作
    本篇文章给大家分享的是有关C#中怎么对注册表进行读取操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。读取指定名称的注册表的值private string ...
    99+
    2023-06-17
  • Python模块 _winreg操作注册表
    用python操作修改windows注册表,显然要比用C或者C++简单。 主要参考资料:官方文档:https://docs.python.org/zh-cn/3/library/winreg.html 通过python操...
    99+
    2022-06-04
    winreg python操作注册表
  • vbs中怎么操作注册表
    这篇文章将为大家详细讲解有关vbs中怎么操作注册表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。打开或关闭CMD:   Dim WSHShell, r...
    99+
    2023-06-08
  • Python中怎么操作注册表
    本篇文章给大家分享的是有关Python中怎么操作注册表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python操作注册表步骤之1.打开注册表对注册表进行操作前,必须打开注册表...
    99+
    2023-06-17
  • VB.NET中怎么操作注册表
    VB.NET中怎么操作注册表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。VB.NET的出现可以说很大程度上改变了开发人员原有的摆弄些代码方式,为编程人员带来了...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作