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")

관련 정보