Настройка владельца ключа реестра и разрешения на запись с помощью PowerShell - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь изменить изображение учетной записи пользователя без использования графического интерфейса. Если я установлю для владельца текущего пользователя (администратора) и установлю для «Все» права доступа «FullControl» с графическим интерфейсом, вторая часть кода, где я устанавливаю значки, будет работать нормально. Первая часть, в которой я пытаюсь изменить правила раздела реестра для «Все», выдает ошибку «Set-Acl: запрошенный доступ к реестру запрещен».

Я пытался использовать openSubKey (), но так и не нашел решения.

#French Accessible
$UserAFR = New-Object System.Security.Principal.NTAccount("FrançaisAccessible")
$ADuserAFR_sid = $UserAFR.Translate([System.Security.Principal.SecurityIdentifier]).Value
$reg_base_afr = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$ADuserAFR_sid"

$curUser = New-Object System.Security.Principal.NTAccount($env:UserDomain, $env:UserName)

$acl = Get-Acl HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$ADuserAFR_sid
$acl.SetOwner($curUser)
$acl.SetAccessRuleProtection($False, $False)

$person = [System.Security.Principal.NTAccount]"Everyone"
$access = [System.Security.AccessControl.RegistryRights]"FullControl"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit, ContainerInherit"
$propagation = [System.Security.AccessControl.PropagationFlags]"None"
$type = [System.Security.AccessControl.AccessControlType]"Allow"

$rule = New-Object System.Security.AccessControl.RegistryAccessRule($person,$access,$inheritance,$propagation,$type)
$acl.ResetAccessRule($rule)

#Gets Error Message Saying Set-Acl: requested registry access is not allowed
Set-Acl HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$ADuserAFR_sid $acl

#Claims to say that everyone has FullControl
$acl.GetAccessRules($true,$true, [System.Security.Principal.NTAccount])

#Check to see if RegistryIdentity is set to FullControl
(Get-Acl HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$ADuserAFR_sid).Access | Format-Table -Wrap

#####################################
## Set Icons - Francais Accessible ##
#####################################
$img448_afr_base = "C:\Company\Profiles\AFR\flat_afr_448.jpg"
$img240_afr_base = "C:\Company\Profiles\AFR\flat_afr_240.jpg"
$img192_afr_base = "C:\Company\Profiles\AFR\flat_afr_192.jpg"
$img96_afr_base = "C:\Company\Profiles\AFR\flat_afr_96.jpg"
$img48_afr_base = "C:\Company\Profiles\AFR\flat_afr_48.jpg"
$img40_afr_base = "C:\Company\Profiles\AFR\flat_afr_40.jpg"
$img32_afr_base = "C:\Company\Profiles\AFR\flat_afr_32.jpg"

Set-ItemProperty -Force -Path $reg_base_afr -Name Image448 -Value $img448_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image240 -Value $img240_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image192 -Value $img192_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image96 -Value $img96_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image48 -Value $img48_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image40 -Value $img40_afr_base
Set-ItemProperty -Force -Path $reg_base_afr -Name Image32 -Value $img32_afr_base

Я ожидаю, что Set-Acl установит разрешение для идентификации реестра в FullControl. Мне отказано в доступе к разделу реестра, даже если я назначил владельца текущим пользователем (администратором).

...