c#对注册表的操作
2014-05-27 16:26
555 查看
本文整理自网络。
一、概述
C#中提供的与注册表相关的最主要的是两个类:
Registry 和 RegistryKey,这两个类属于Microsoft.Win32命名空间
1.Registry类包含5个公共的静态域,分别代表5个基本主键分别是:
Registry.ClassesRoot
Registry.CurrentUser
Registry.LocalMachine
Registry.Users
Registry.Current Config
这5个类分别对应注册表的第二级目录的五个预定义主键
2.RegistryKey类中提供了对注册表操作的方法
CreateSubKey //建立一个子键
OpenSubKey //打开一个子键
DeleteKey //删除一个子键
DeleteKeyTree//删除一个键及其下的全部键
GetValue //获取键值
SetValue //设置键值
建立子健并设置键值的示例:
代码
删除一个键值的示例:
代码
说到了删除键值就必须关注另外一个问题:系统权限!直接删除一个键会触发执行未授权的操作异常
这又涉及到另外一个类RegistrySecurity,它属于System.Security.AccessControl命名空间
RegistrySecurity 对象指定了注册表项的访问权限,以及如何审核访问企图。对注册表项的访问权限体现为规则,每个访问规则由一个 RegistryAccessRule 对象表示。每个审核规则都由一个RegistryAuditRule 对象表示。
若要将访问控制安全性从一个注册表项复制到另一个注册表项,请使用RegistryKey.GetAccessControl 方法获取表示第一个注册表项的访问规则和审核规则的RegistrySecurity 对象,然后使用 RegistryKey.SetAccessControl 方法或一个接受RegistrySecurity 对象的构造函数将规则指定给第二个注册表项 。
下面演示一个如何获取操作版本的例子:
一、概述
C#中提供的与注册表相关的最主要的是两个类:
Registry 和 RegistryKey,这两个类属于Microsoft.Win32命名空间
1.Registry类包含5个公共的静态域,分别代表5个基本主键分别是:
Registry.ClassesRoot
Registry.CurrentUser
Registry.LocalMachine
Registry.Users
Registry.Current Config
这5个类分别对应注册表的第二级目录的五个预定义主键
2.RegistryKey类中提供了对注册表操作的方法
CreateSubKey //建立一个子键
OpenSubKey //打开一个子键
DeleteKey //删除一个子键
DeleteKeyTree//删除一个键及其下的全部键
GetValue //获取键值
SetValue //设置键值
建立子健并设置键值的示例:
代码
private void WTRegedit(string name,string tovalue) { RegistryKey hklm = Registry.LocalMachine; RegistryKey software = hklm.OpenSubKey("SOFTWARE",true); RegistryKey aimdir = software.CreateSubKey("XXX"); aimdir.SetValue(name,tovalue); }
删除一个键值的示例:
代码
private void DeleteRegist(string name) { string[] aimnames; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE",true); aimnames = software.GetSubKeyNames(); foreach(string aimKey in aimnames) { if(aimKey == name) aimdir.DeleteSubKeyTree(name); } }
说到了删除键值就必须关注另外一个问题:系统权限!直接删除一个键会触发执行未授权的操作异常
这又涉及到另外一个类RegistrySecurity,它属于System.Security.AccessControl命名空间
RegistrySecurity 对象指定了注册表项的访问权限,以及如何审核访问企图。对注册表项的访问权限体现为规则,每个访问规则由一个 RegistryAccessRule 对象表示。每个审核规则都由一个RegistryAuditRule 对象表示。
若要将访问控制安全性从一个注册表项复制到另一个注册表项,请使用RegistryKey.GetAccessControl 方法获取表示第一个注册表项的访问规则和审核规则的RegistrySecurity 对象,然后使用 RegistryKey.SetAccessControl 方法或一个接受RegistrySecurity 对象的构造函数将规则指定给第二个注册表项 。
下面演示一个如何获取操作版本的例子:
RegistryKey rk;//注册表项级节点 rk = Registry.LocalMachine.OpenSubKey("software\\microsoft\\windows nt\\currentversion"); string osname = rk.GetValue("ProductName").ToString();//获取系统名 rk.Close(); if (osname == "Microsoft Windows XP") Console.WriteLine("你的操作系统是XP");