C#对注册表的操作
C#中提供的与注册表相关的最主要的是两个类:
Registry 和 RegistryKey,这两个类属于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#对注册表的操作的更多相关文章
- windows下注册表的操作
原博:https://blog.csdn.net/denghubu/article/details/5765921 1. 注册表简介 注册表是为Windows NT和Windows95中所 ...
- Windows 注册表常用操作
1 添加一个主键(比如在HKEY_LOCAL_MACHINE\SOFTWARE\中添加一个ABCEDFGHIJKLMN主键) Windows Registry Editor Version 5.00 ...
- C++Builder中注册表的操作
僮骶头浅5募虻チ耍旅嫖揖鸵砸桓鍪道此得鱐Registry类的用法.首先,先介绍一下TRegistry的属性和方法:TRegistry类一共有四个属性.属性 类型 描述CurrentKey int ...
- C#注册表常用操作
1:加键 改值 Microsoft.Win32.RegistryKey Key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( @" ...
- 验证reg注册表的操作
// wRegKeyclass wRegKey{ // Operationspublic: BOOL Create(HKEY hKeyParent, LPCTSTR lpszKeyName , LPT ...
- [荐]使用Js操作注册表
使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...
- Inno Setup入门(十)——操作注册表 & 自启程序
http://379910987.blog.163.com/blog/static/3352379720110259414788/ 有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过 ...
- delphi 注册表操作(读取、添加、删除、修改)完全手册
DELPHI VS PASCAL(87) 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操 ...
- Delphi的注册表操作
转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创 ...
随机推荐
- DevOps之软件定义网络SDN
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...
- cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配
准备工具 Cocos 引擎当前最新版本:v2.3.3 官网下载地址: http://www.cocos.com/download/ 前述:cocos自带UI编辑器在最新的版本有了很大的改动 ...
- Object类—复写equals方法,hashCode方法,toString方法
Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object { private int age; Person( ...
- 图论 Warshall 和Floyd 矩阵传递闭包
首先我们先说下图论,一般图存储可以使用邻接矩阵,或邻接表,一般使用邻接矩阵在稠密图比较省空间. 我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀 ...
- Windows 10新功能
Windows 10 中面向开发人员的新增功能 Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具.功能和体验.在 Windows 10 上安装完工具和 SDK后, ...
- OpenWRT 恢复出厂设置命令
如果通过无线或者有线口无法连接到router,可以用恢复某些设置重新设置路由器. 1. 开机,等着一个工作灯亮的时候立即按下rest键2秒,然后就开始拼命闪烁,很好现在进入failsafe模式了. 2 ...
- canvas+gif.js打造自己的数字雨头像
前言 昨天 是1024程序员节,不知道各位看官过的怎么样.既然是过节,就要有个过节的样子,比方说,换个头像
- LINUX 笔记-ln 命令
给文件创建软链接 命令:ln -s log2013.log link2013 给文件创建硬链接 命令:ln log2013.log ln2013
- [mysql使用(3)] 使用mysql的时候遇到的一些错误
1.Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题. [Err] 1055 - Expression #1 of ORDER BY clause is not in ...
- HTML form表单回车触发提交
<script type="text/javascript"> function submitByEnter() { if(event.key ...