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");

C#对注册表的操作的更多相关文章

  1. windows下注册表的操作

    原博:https://blog.csdn.net/denghubu/article/details/5765921 1.       注册表简介 注册表是为Windows NT和Windows95中所 ...

  2. Windows 注册表常用操作

    1 添加一个主键(比如在HKEY_LOCAL_MACHINE\SOFTWARE\中添加一个ABCEDFGHIJKLMN主键) Windows Registry Editor Version 5.00 ...

  3. C++Builder中注册表的操作

    僮骶头浅5募虻チ耍旅嫖揖鸵砸桓鍪道此得鱐Registry类的用法.首先,先介绍一下TRegistry的属性和方法:TRegistry类一共有四个属性.属性 类型 描述CurrentKey int ...

  4. C#注册表常用操作

    1:加键 改值 Microsoft.Win32.RegistryKey Key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( @" ...

  5. 验证reg注册表的操作

    // wRegKeyclass wRegKey{ // Operationspublic: BOOL Create(HKEY hKeyParent, LPCTSTR lpszKeyName , LPT ...

  6. [荐]使用Js操作注册表

    使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...

  7. Inno Setup入门(十)——操作注册表 & 自启程序

    http://379910987.blog.163.com/blog/static/3352379720110259414788/ 有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过 ...

  8. delphi 注册表操作(读取、添加、删除、修改)完全手册

    DELPHI VS PASCAL(87)  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操 ...

  9. Delphi的注册表操作

    转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息.     一.创 ...

随机推荐

  1. jQuery和js获取select元素的选中项value?

    1.jQuery方式获取:$("#test").val(); 2.js方式获取:document.getElementById("test").value;

  2. 学习总结---BGP协议

    一.可以在自治域内使用BGP作为域内协议吗? 为什么?它和OSPF的关键差异是什么? 1.BGP的全称是边界网关协议,用于自治域间的路由传递,它不像OSPF协议,其重点不在于路由的计算,而在于路由的控 ...

  3. Admob - Google广告接入

    前言 现在免费小游戏及应用的主要收入渠道就是通过接入广告.而Google的Admob适用于全球范围内的广告接入,文档方面及后台管理也是较为完善,接入还是比较便捷的. 不过Google目前还在墙外,虽然 ...

  4. linux_base_commond_two

    1.linux privilege commond a.throught ll commond  can get follow picture d  directory    -  file   l ...

  5. iOS代码处理横屏问题

    借助通知来控制界面的横竖屏切换.还是整个App中大部分界面都是竖屏,某个界面可以横竖屏切换的情况. 首先,在[General]-->[Device Orientation]设置仅支持竖屏,lik ...

  6. 【转载】CSS font关键字属性值的简单研究

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=5 ...

  7. 基于HTML5和WebGL的碰撞测试

    这是公司大神写的一个放官网上给用户学习的例子,我一开始真的不知道这是在干嘛,就只是将三个形状图元组合在一起,然后可以同时旋转.放大缩小这个三个图形,点击"Animate"就能让中间 ...

  8. js 查询 添加 删除 练习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. Java 线程基本知识

    线程 线程和进程 进程 : 进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程 : 线程是进程中的一个执行单元(执行路径 ...

  10. 如何搭建ftp的yum源

                ftp的yum的搭建步骤 第一步:安装vsftpd程序包(系统已经安装) [root@station40 ~]# rpm -qa |grep vsftpd vsftpd-2.2 ...