Me encontré con un problema extraño cuando actualicé algunas máquinas a Windows 10 donde los permisos incorrectos en RuntimeBroker causaron problemas. He encontrado una solución en línea que recomendaba cambiar los permisos (primero en el registro, luego en la configuración de DCOM), y estoy intentando escribir un Powershell script para automatizar el proceso.
Estoy intentando ejecutar el siguiente Powershell script, que debería (en teoría) hacer lo que necesito. Sin embargo, en el último comando (Set-Acl) me sale una SecurityException diciendo "Requested registry access is not allowed".
$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;
Actualmente, el propietario de esa clave de registro es NT SERVICE\TrustedInstaller
y estoy intentando cambiarlo a Administrators
. Ya estoy ejecutando Powershell con privilegios administrativos pero obviamente no parece suficiente... creo que me estoy encontrando con el problema del huevo y la gallina.
Si edito manualmente los permisos de esa clave utilizando regedit
puedo hacerlo sin problemas. ¿Qué es lo que regedit está haciendo diferente de mi script aquí? ¿Cómo puedo lograr esto mediante programación?
ACTUALIZACIÓN: Siguiendo la sugerencia de briantist, he intentado ejecutar estos comandos como SYSTEM usando psexec. Guardé los comandos Powershell publicados anteriormente en un archivo en mi escritorio llamado chowner.ps1 y luego ejecuté el siguiente comando:
PsExec64.exe -accepteula -d -i -s powershell -ExecutionPolicy Bypass -File C:\Users\User\Desktop\chowner.ps1
Por desgracia, sigo recibiendo el mismo mensaje de SecurityException. Creo que la razón es porque ni siquiera SYSTEM tiene derechos de acceso a esta clave del Registro en particular; recuerde que TrustedInstaller es su propietario.