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.