• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#对注册表的操作

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C#中提供的与注册表相关的最主要的是两个类:

RegistryRegistryKey,这两个类属于Microsoft.Win32命名空间

 

Registry类包含5个公共的静态域,分别代表5个基本主键分别是:

Registry.ClassesRoot

Registry.CurrentUser

Registry.LocalMachine

Registry.Users

Registry.Current Config

这5个类分别对应注册表的第二级目录的五个预定义主键

 

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 对象的构造函数将规则指定给第二个注册表项 

示例代码:

 

代码
RegistrySecurity rsy = new RegistrySecurity();

RegistryAccessRule rar
=new RegistryAccessRule(Environment.UserDomainName+
"\\"+Environment.UserName,RegistryRights.ReadKey|RegistryRights.WriteKey|
RegistryRights.Delete,InheritanceFlags.ContainerInherit,PropagationFlags.None,
AccessControlType.Allow);

rsy.AddAccessRule(rar);

RegistryKey cu
= Registry.CurrentUser;

RegistryKey rk
= cu.CreateSubKey("test1", RegistryKeyPermissionCheck.ReadWriteSubTree, rsy);

RegistryKey rky
= rk.CreateSubKey("test2",RegistryKeyPermissionCheck.ReadWriteSubTree);

cu.DeleteSubKeyTree(
"test1");

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
基于ArcGIS10.0和Oracle10g的空间数据管理平台一(C#开发)发布时间:2022-07-13
下一篇:
C# 中字符串转换成日期发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap