Definindo permissões de registro com o Powershell

3

Eu tenho uma chave de registro que preciso apropriar e, em seguida, defina um conjunto de permissões. Eu sou capaz de assumir a propriedade, mas ao definir a permissão, ela só se aplica ao nível muito alto da chave do Registro, ela não herda para baixo. 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()
    
por Meckron 13.05.2015 / 21:15

1 resposta

3

Encontrei a resposta depois de examinar os parâmetros do AccessControl mais de perto. Eu não era específico o suficiente para definir a ACL a ser adicionada. Este é o código atual, que adiciona apenas a permissão somente à chave principal;

$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 herda as seguintes:

$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","ObjectInherit,ContainerInherit","None","Allow")
    
por 13.05.2015 / 23:02