Configurar permisos de registro con Powershell

Configurar permisos de registro con Powershell

Tengo una clave de registro de la que necesito tomar posesión y luego configurar un permiso. Puedo tomar posesión, pero al configurar el permiso, solo se aplica al nivel superior de la clave de registro, no se hereda. ¿Qué necesito modificar para que el permiso herede la clave completa?

$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()

Respuesta1

Encontré la respuesta después de observar más de cerca los parámetros de AccessControl. No fui lo suficientemente específico al definir la ACL que se agregaría. Este es el código actual, que solo agrega el permiso solo a la clave superior;

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

Este es el código que permite que la ACL se establezca en el nivel superior del registro y herede los siguientes:

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

información relacionada