C# 如何向现有注册表项分配新权限(ACL),而不从父项继承权限

C# 如何向现有注册表项分配新权限(ACL),而不从父项继承权限,c#,windows,registry,acl,C#,Windows,Registry,Acl,可以使用RegistryKey.SetAccessControl(新注册表安全性(…)设置新权限。但是在此之后,继承被打开 有没有办法在不打开继承的情况下分配新的权利 整个代码: void test { SecurityIdentifier sidAccUser = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null); NTAccount ntAccUser = sidAccUser.Translate(

可以使用
RegistryKey.SetAccessControl(新注册表安全性(…)
设置新权限。但是在此之后,
继承被打开

有没有办法在不打开继承的情况下分配新的权利

整个代码:

void test
{

    SecurityIdentifier sidAccUser = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
    NTAccount ntAccUser = sidAccUser.Translate(typeof(NTAccount)) as NTAccount;

    RegistryAccessRule regAcRule = new RegistryAccessRule(
      ntAccUser
    , RegistryRights.FullControl
    , InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit
    , PropagationFlags.None
    , AccessControlType.Allow);

    RegistrySecurity regSecurity = new RegistrySecurity();
    regSecurity.AddAccessRule(regAcRule);

    RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"ZZTEST", true);

    // after that the inheritance is turned on
    regKey.SetAccessControl(regSecurity);

}

我找到了此解决方案,但不想使用COM服务器:

使用
SetAccessRuleProtection
保护DACL不受继承

regSecurity.SetAccessRuleProtection(true, false);

@boboes,它在
ObjectSecurity
类上,因为它应用于对象作为一个整体,而不是单个
AccessRule
ACE
。我的意思是,我希望它是regKey.SetAccessControl(…,true,false)的一个参数,而不是作为一个单独的方法。@boboes,Net这样做是因为底层系统就是这样做的。它是
安全描述符
结构的一部分。Net类只是围绕本机功能的包装。