C#高级知识

注册表技术

  • 注册表是一个庞大的数据库系统,它记录了用户安装在计算机上的软件、硬件信息和每一个程序的相互关系。注册表中存放着很多参数,直接控制整个系统的启动、硬件驱动程序的装载以及应用程序的运行
  • Windows注册表包含Windows安装以及已安装软件和设备的所有配置信息。现在商用软件基本上都使用注册表来存储这些信息,COM组件必须把它的信息存储在注册表中,才能由客户程序调用。注册表的层次结构非常类似于文件系统,它记录了用户账号、服务器硬件以及应用程序的设置信息等。同INI文件相比,注册表可以控制的数据更多,而且不仅仅限于处理字符串类型的数据。注册表也包含了一些系统配置的信息,这些信息根据操作系统的不同而不同
  • 选择“开始”→“运行”命令,在“打开”文本框中输入regedit,然后单击“确定”按钮打开“注册表编辑器”窗口
  • .NET Framework提供了访问注册表的类,比较常用的是Registry类和RegistryKey类,这两个类都在Microsoft.Win32命名空间中
  • 由于Windows 10以上系统本身的安全性问题,使用C#操作注册表时,可能会提示无法操作相应的注册表项,这时只需要为提示的注册表项添加everyone用户的读写权限即可
  • egistry类不能被实例化,它的作用只是实例化RegistryKey类,以便开始在注册表中浏览。Registry类是通过静态属性来提供这些实例的,这些属性共有7个
    在这里插入图片描述
  • RegistryKey实例表示一个注册表项,这个类的方法可以浏览子键、创建新键、读取或修改键中的值。也就是说,该类可以完成对注册表项的所有操作。除了设置键的安全级别之外,RegistryKey类可以用于完成对注册表的所有操作

在这里插入图片描述在这里插入图片描述

  • 读取注册表信息主要通过RegistryKey类的OpenSubKey()、GetSubKeyNames()和GetValueNames()方法实现
    OpenSubKey()方法用于检索指定的子项;如果要打开的项不存在,OpenSubKey()方法将返回null引用,而不是引发异常。
    RegistryKey OpenSubKey(string name )
    name:以只读方式打开的子项名称或路径。
    返回值:请求的子项。如果操作失败,则为空引用。
    如:使用OpenSubKey(string name )方法打开HKEY_LOCAL_MACHINE\SOFTWARE子键在这里插入图片描述
  • GetSubKeyNames()方法用于检索包含所有子项名称的字符串数组。其返回值包含当前项的子项名称的字符串数组。如果当前项已被删除,或是用户没有读取该项的权限,将触发异常
    string[] GetSubKeyNames()
    如:通过GetSubKeyNames()方法检索HKEY_LOCAL_MACHINE\SOFTWARE子键下包含的所有子项名称的字符串数组
    在这里插入图片描述
    在这里插入图片描述

GetValueNames()方法用于检索包含与此项关联的所有值名称的字符串数组。其返回值包含当前项的值名称的字符串数组。如果没有找到此项的值名称,则返回一个空数组;如果在注册表项设置了一个具有默认值的名称为空字符串的项,则GetValueNames()方法返回的数组中包含该空字符串

  • 通过RegistryKey类的CreateSubKey()方法和SetValue()方法可以创建注册表信息
    Register CreateSubKey(string subkey )方法用于创建一个新子项,或打开一个现有子项以进行写访问
    subkey:待创建或打开的子项名称或路径。
    返回值:RegistryKey对象,表示新建的子项或空引用。如果为subkey指定了零长度字符串,则返回当前的RegistryKey对象。
    Register SetValue(string name,object value)方法用于设置注册表项中的名称/值对的值,
    name:待存储的值的名称。
    value:待存储的数据。
    SetValue()方法用于从非托管代码中访问托管类,不应从托管代码调用。
    在这里插入图片描述
    在这里插入图片描述

  • 由于注册表信息十分重要,所以一般不要对其进行写操作。因此在.Net Framework中并没有提供修改注册表键值的方法,而只是提供了一个危害性相对较小的SetValue()方法。通过这个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值