zoukankan      html  css  js  c++  java
  • C#对注册表的操作

    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");
  • 相关阅读:
    Windows 和Linux 误删除后的恢复
    AWS 使用总结
    20180814 错误分析
    你必须知道的互联网协议详解
    linux常用命令和关闭防火墙
    Nginx之ngx_http_fastcgi_module模块详解
    nginx 限制ip
    nginx allow 多个ip & ipv4的网段表示方法解析
    从Nginx的Web请求处理机制中剖析多进程、多线程、异步IO
    剑指offer:二叉树的深度
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3571973.html
Copyright © 2011-2022 走看看