
Ich habe einen Registrierungsschlüssel, dessen Besitz ich übernehmen und für den ich dann eine Berechtigung festlegen muss. Ich kann den Besitz übernehmen, aber wenn ich die Berechtigung festlege, gilt sie nur für die oberste Ebene des Registrierungsschlüssels und wird nicht nach unten vererbt. Was muss ich ändern, damit die Berechtigung auf den gesamten Schlüssel vererbt wird?
$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()
Antwort1
Ich habe die Antwort gefunden, nachdem ich mir die AccessControl-Parameter genauer angesehen habe. Ich war bei der Definition der hinzuzufügenden ACL nicht spezifisch genug. Dies ist der aktuelle Code, der die Berechtigung nur dem obersten Schlüssel hinzufügt.
$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","Allow")
Mit diesem Code kann die ACL auf der obersten Ebene der Registrierung festgelegt und an die darunter liegenden Ebenen vererbt werden:
$AddACL = New-Object System.Security.AccessControl.RegistryAccessRule ("Domain Admins","FullControl","ObjectInherit,ContainerInherit","None","Allow")