编辑
2025-09-25
C#
00

目录

摘要
正文

摘要

注册表(Registry,繁体中文版Windows操作系统称之为登录档案)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用。

正文

命令行,输入regedit

image.png

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

注册表主键

  • 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主键

RegistryKey类

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

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

创建一个Key

image.png

C#
private void btnCreateSubKey_Click(object sender, EventArgs e) { //使用CreateSubKey()在SOFTWARE下创建子项IDIOSOFT RegistryKey hklm = Registry.LocalMachine;//HKEY_LOCAL_MACHINE RegistryKey hkSoftWare = hklm.CreateSubKey(@"SOFTWARE\IDIOSOFT"); hklm.Close(); hkSoftWare.Close(); }

创建键值

image.png

C#
private void btnCreateInfo_Click(object sender, EventArgs e) { //主要用到了SetValue(),表示在IDIOSOFT下创建名称为Name与No RegistryKey hklm = Registry.LocalMachine; //打开现有SubKey节点 RegistryKey key = hklm.OpenSubKey(@"SOFTWARE\IDIOSOFT", true); key.SetValue("Name", "admin", RegistryValueKind.String); key.SetValue("No", "10001", RegistryValueKind.String); hklm.Close(); key.Close(); }

取得Value

C#
private void btnReadInfo_Click(object sender, EventArgs e) { //主要用到了GetValue(),获得名称为"Name","No"的键值 RegistryKey hklm = Registry.LocalMachine; RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\IDIOSOFT", true); string Name = hkSoftWare.GetValue("Name").ToString(); string No = hkSoftWare.GetValue("No").ToString(); hklm.Close(); hkSoftWare.Close(); }

删除一个键值

C#
private void btnGetValue_Click_1(object sender, EventArgs e) { //主要用到了DeleteValue() //,表示删除名称为"Name"的键值,第二个参数表示是否抛出异常 RegistryKey hklm = Registry.LocalMachine; RegistryKey key = hklm.OpenSubKey(@"SOFTWARE\IDIOSOFT", true); key.DeleteValue("Name", true); hklm.Close(); key.Close(); }

删除一个键

C#
private void btnDeleteKey_Click(object sender, EventArgs e) { //主要用到了DeleteSubKey(),删除IDIOSOFT项 RegistryKey hklm = Registry.LocalMachine; //为true时,删除的注册表不存在时抛出异常;当为false时不抛出异常。 hklm.DeleteSubKey(@"SOFTWARE\IDIOSOFT", true); hklm.Close(); }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!