C#操作注册表之RegistryKey类

这篇文章介绍了C#操作注册表之RegistryKey类,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

表示 Windows 注册表中的项级节点。 此类是注册表封装。

继承层次结构

System.Object 
  System.MarshalByRefObject
    Microsoft.Win32.RegistryKey

命名空间:Microsoft.Win32

程序集:mscorlib(在 mscorlib.dll 中) 

属性

名称说明
Handle获取一个 SafeRegistryHandle 对象,该对象表示当前 RegistryKey 对象封装的注册表项。
Name检索项的名称。
SubKeyCount检索当前项的子项数目。
ValueCount检索项中值的计数。
View获取用于创建注册表项的视图。

方法

名称说明
Close关闭该项,如果该项的内容已修改,则将该项刷新到磁盘。
CreateSubKey(String)创建一个新子项或打开一个现有子项以进行写访问。
CreateSubKey(String, RegistryKeyPermissionCheck)使用指定的权限检查选项创建一个新子项或打开一个现有子项以进行写访问。
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)使用指定的权限检查和注册表选项,创建或打开一个用于写访问的子项。
CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)使用指定的权限检查选项和注册表安全性创建一个新子项或打开一个现有子项以进行写访问。
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)使用指定的权限检查选项、注册表选项和注册表安全性,创建或打开一个用于写访问的子项。
DeleteSubKey(String)删除指定的子项。
DeleteSubKey(String, Boolean)删除指定的子项,并指定在找不到该子项时是否引发异常。
DeleteSubKeyTree(String)递归删除子项和任何子级子项。
DeleteSubKeyTree(String, Boolean)以递归方式删除指定的子项和任何子级子项,并指定在找不到子项时是否引发异常。
DeleteValue(String)从此项中删除指定值。
DeleteValue(String, Boolean)从此项中删除指定的值,并指定在找不到该值时是否引发异常。
Dispose释放由 RegistryKey 类的当前实例占用的所有资源。
Flush将指定的打开注册表项的全部特性写到注册表中。
FromHandle(SafeRegistryHandle)根据指定的句柄创建注册表项。
FromHandle(SafeRegistryHandle, RegistryView)利用指定的句柄和注册表视图设置创建注册表项。
GetAccessControl()返回当前注册表项的访问控制安全性。
GetAccessControl(AccessControlSections)返回当前注册表项的访问控制安全性的指定部分。
GetSubKeyNames检索包含所有子项名称的字符串数组。
GetValue(String)检索与指定名称关联的值。 如果注册表中不存在名称/值对,则返回 null。
GetValue(String, Object)检索与指定名称关联的值。 如果未找到名称,则返回您提供的默认值。
GetValue(String, Object, RegistryValueOptions)检索与指定的名称和检索选项关联的值。 如果未找到名称,则返回您提供的默认值。
GetValueKind检索与指定名称关联的值的注册表数据类型。
GetValueNames检索包含与此项关联的所有值名称的字符串数组。
OpenBaseKey打开一个新的 RegistryKey,它使用指定的视图在本地计算机上表示请求的项。
OpenRemoteBaseKey(RegistryHive, String)打开一个新的 RegistryKey,它表示远程计算机上的请求的项。
OpenRemoteBaseKey(RegistryHive, String, RegistryView)打开一个新的注册表项,它使用指定的视图在远程计算机上表示请求的项。
OpenSubKey(String)以只读方式检索子项。
OpenSubKey(String, RegistryKeyPermissionCheck)检索指定的子项以进行读取或读/写访问。
OpenSubKey(String, Boolean)检索指定的子项,并指定是否将写访问权限应用于该项。
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)检索指定的子项以进行读取或读/写访问,请求指定的访问权限。
SetAccessControl向现有注册表项应用 Windows 访问控制安全性。
SetValue(String, Object)设置指定的名称/值对。
SetValue(String, Object, RegistryValueKind)使用指定的注册表数据类型设置注册表项中的名称/值对的值。
ToString检索此项的字符串表示形式。 (重写 Object.ToString()。)

备注

要获取 RegistryKey 的实例,请使用 Registry 类的静态成员之一。

注册表充当计算机上操作系统和应用程序的中央信息储存库。 注册表根据存储在其中的元素的逻辑顺序,以分层形式组织(有关该层次结构中的基级项,请参见 Registry)。在注册表中存储信息时,请根据存储的信息类型选择适当的位置。 一定要避免损坏由其他应用程序创建的信息,原因是这样会导致那些应用程序出现意外的行为,并且还会对您自己的应用程序带来不利影响。

注册表项是组织基本单元在注册表,并且可以与文件资源管理器的文件夹比较。 每个具体的注册表项都可以有子项,就像文件夹下可以有子文件夹一样。 只要用户具有相应的权限,且注册表项不是基项或基项的下一级项,就可以删除该注册表项。 每个注册表项也可带有与其相关联的多个值(一个值就好比是一个文件),它们用于存储信息,例如,有关计算机上安装的应用程序的信息。 每个值存储特定的信息,可按需要对其进行检索或更新。 例如,可以为您的公司创建一个 RegistryKey(在项 HKEY_LOCAL_MACHINE\Software 下),然后为您的公司创建的每个应用程序创建一个子项。 每个子项保存特定于该应用程序的信息,如颜色设置、屏幕位置和大小或者可识别的文件扩展名。

注意,存储在注册表中的信息可由其他应用程序和用户使用,因此不要用注册表存储安全数据或关键的应用程序信息。

警告

在公开 RegistryKey 对象时不要采用一种可能会导致恶意程序创建成千上万的无意义的子项或键/值对的方式。 例如,不允许调用方输入任意键或值。

在 .NET Framework 4 中开始,注册表项的长度不再限于 255 个字符。

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

本文标题为:C#操作注册表之RegistryKey类

基础教程推荐