Configurando permissões de registro com Powershell

Configurando permissões de registro com Powershell

Eu tenho uma chave de registro da qual preciso me apropriar e, em seguida, definir um conjunto de permissões. Posso assumir a propriedade, mas ao definir a permissão, ela se aplica apenas ao nível superior da chave de registro, não é herdada. O que preciso modificar para que a permissão herde a chave inteira?

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

Responder1

Encontrei a resposta depois de examinar mais de perto os parâmetros do AccessControl. Não fui específico o suficiente ao definir a ACL a ser adicionada. Este é o código atual, que adiciona permissão apenas à chave superior;

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

Este é o código que permite que a ACL seja definida no nível superior do registro e herde os níveis abaixo:

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

informação relacionada