Настройка разрешений реестра с помощью Powershell

Настройка разрешений реестра с помощью Powershell

У меня есть раздел реестра, который мне нужно взять во владение, а затем установить для него набор разрешений. Я могу взять во владение, но при установке разрешения оно применяется только к самому верхнему уровню раздела реестра, оно не наследуется вниз. Что мне нужно изменить, чтобы разрешение наследовалось для всего раздела?

$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","Allow")
$owner = [System.Security.Principal.NTAccount]"Administrators"

$keyCR = [Microsoft.Win32.Registry]::ClassesRoot.OpenSubKey("CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}",[Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,[System.Security.AccessControl.RegistryRights]::takeownership)
# Get a blank ACL since you don't have access and need ownership
$aclCR = $keyCR.GetAccessControl([System.Security.AccessControl.AccessControlSections]::None)
$aclCR.SetOwner($owner)
$keyCR.SetAccessControl($aclCR)

# Get the acl and modify it
$aclCR = $keyCR.GetAccessControl()
$aclCR.SetAccessRule($AddACL)
$keyCR.SetAccessControl($aclCR)
$keyCR.Close()

решение1

Я нашел ответ, посмотрев на параметры AccessControl поближе. Я не был достаточно конкретен в определении ACL для добавления. Это текущий код, который добавляет разрешение только к верхнему ключу;

$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","Allow")

Это код, который позволяет установить ACL на верхнем уровне реестра и наследовать его для более низких уровней:

$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","ObjectInherit,ContainerInherit","None","Allow")

Связанный контент