Como posso alterar o proprietário de uma chave de registro para a qual não tenho acesso?

1

Eu tive um problema bizarro quando atualizei algumas máquinas para o Windows 10, onde as permissões incorretas no RuntimeBroker causavam problemas. Eu encontrei uma solução on-line que recomendava a alteração de permissões (primeiro no registro, em seguida, na configuração do DCOM), e eu estou tentando escrever um script Powershell para automatizar o processo.

Estou tentando executar o seguinte script Powershell, que deve (teoricamente) fazer o que preciso fazer. No entanto, no último comando (Set-Acl), recebo uma exceção SecurityException dizendo "O acesso de registro solicitado não é permitido".

$path = "Registry::HKEY_CLASSES_ROOT\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}";
$account = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList 'Administrators';
$acl = Get-Acl -Path $path;
$acl.SetOwner($account);
Set-Acl -Path $path -AclObject $acl;

Atualmente, o proprietário dessa chave do registro é NT SERVICE\TrustedInstaller e estou tentando alterá-la para Administrators . Eu já estou usando o Powershell com privilégios administrativos mas isso, obviamente, não parece suficiente ... meu palpite é que estou com um problema de ovo e galinha aqui.

Se eu editar manualmente as permissões dessa chave usando regedit , tenho permissão para fazer isso sem problemas. O que é que regedit está fazendo diferente do meu script aqui? Como posso realizar isso de forma programática?

UPDATE: Por sugestão do briantist, eu tentei rodar esses comandos como SYSTEM usando o psexec. Salvei os comandos do Powershell postados acima em um arquivo na minha área de trabalho chamado chowner.ps1 e, em seguida, executei o seguinte comando:

PsExec64.exe -accepteula -d -i -s powershell -ExecutionPolicy Bypass -File C:\Users\User\Desktop\chowner.ps1

Infelizmente, ainda recebo a mesma mensagem SecurityException. Eu acredito que a razão é porque nem mesmo o sistema tem direitos de acesso a essa chave de registro específica; lembre-se de que o TrustedInstaller é o proprietário.

    
por SoaperGEM 19.07.2016 / 20:57

2 respostas

2

Você pode usar a excelente ferramenta Set-ACL CLI da Helge Kleins: link .

SetACL.exe -on "hkcr\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}" -ot reg -actn setowner -ownr "n:S-1-5-32-544"

Esse faria o truque que eu penso. Deve ser executado com permissões elevadas.

    
por 02.08.2016 / 21:36
0

Você deve executar seu código como SYSTEM , a.k.a. Local System .

Para fazer isso, você pode usar psexec da SysInternals ou pode executar o código como uma tarefa agendada que está configurada para ser executada como SYSTEM . Isso deve permitir que você altere as permissões.

    
por 19.07.2016 / 20:59