<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />

RegistrySecurity

public sealed class RegistrySecurity : NativeObjectSecurity
Represents the Windows access control security for a registry key. This class cannot be inherited.
using Microsoft.Win32.SafeHandles; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security.Principal; namespace System.Security.AccessControl { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public sealed class RegistrySecurity : NativeObjectSecurity { public override Type AccessRightType => typeof(RegistryRights); public override Type AccessRuleType => typeof(RegistryAccessRule); public override Type AuditRuleType => typeof(RegistryAuditRule); public RegistrySecurity() : base(true, ResourceType.RegistryKey) { } internal RegistrySecurity(SafeRegistryHandle hKey, string name, AccessControlSections includeSections) : base(true, ResourceType.RegistryKey, hKey, includeSections, _HandleErrorCode, null) { } private static Exception _HandleErrorCode(int errorCode, string name, SafeHandle handle, object context) { return _HandleErrorCodeCore(errorCode, name, handle, context); } public override AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) { return new RegistryAccessRule(identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, type); } public override AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) { return new RegistryAuditRule(identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, flags); } internal AccessControlSections GetAccessControlSectionsFromChanges() { AccessControlSections accessControlSections = AccessControlSections.None; if (base.AccessRulesModified) accessControlSections = AccessControlSections.Access; if (base.AuditRulesModified) accessControlSections |= AccessControlSections.Audit; if (base.OwnerModified) accessControlSections |= AccessControlSections.Owner; if (base.GroupModified) accessControlSections |= AccessControlSections.Group; return accessControlSections; } internal void Persist(SafeRegistryHandle hKey, string keyName) { WriteLock(); try { AccessControlSections accessControlSectionsFromChanges = GetAccessControlSectionsFromChanges(); if (accessControlSectionsFromChanges != 0) { Persist(hKey, accessControlSectionsFromChanges); bool flag2 = base.AccessRulesModified = false; bool flag4 = base.AuditRulesModified = flag2; bool ownerModified = base.GroupModified = flag4; base.OwnerModified = ownerModified; } } finally { WriteUnlock(); } } public void AddAccessRule(RegistryAccessRule rule) { AddAccessRule((AccessRule)rule); } public void SetAccessRule(RegistryAccessRule rule) { SetAccessRule((AccessRule)rule); } public void ResetAccessRule(RegistryAccessRule rule) { ResetAccessRule((AccessRule)rule); } public bool RemoveAccessRule(RegistryAccessRule rule) { return RemoveAccessRule((AccessRule)rule); } public void RemoveAccessRuleAll(RegistryAccessRule rule) { RemoveAccessRuleAll((AccessRule)rule); } public void RemoveAccessRuleSpecific(RegistryAccessRule rule) { RemoveAccessRuleSpecific((AccessRule)rule); } public void AddAuditRule(RegistryAuditRule rule) { AddAuditRule((AuditRule)rule); } public void SetAuditRule(RegistryAuditRule rule) { SetAuditRule((AuditRule)rule); } public bool RemoveAuditRule(RegistryAuditRule rule) { return RemoveAuditRule((AuditRule)rule); } public void RemoveAuditRuleAll(RegistryAuditRule rule) { RemoveAuditRuleAll((AuditRule)rule); } public void RemoveAuditRuleSpecific(RegistryAuditRule rule) { RemoveAuditRuleSpecific((AuditRule)rule); } private static Exception _HandleErrorCodeCore(int errorCode, string name, SafeHandle handle, object context) { throw new PlatformNotSupportedException(); } } }