2 votos

¿Cómo puedo cambiar el propietario de una clave de registro a la que no tengo acceso?

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.

2voto

Gomibushi Puntos 730

Puedes utilizar la excelente herramienta CLI Set-ACL de Helge Kleins: https://helgeklein.com/setacl/ .

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

Creo que con eso bastaría. Debe ejecutarse con permisos elevados.

0voto

briantist Puntos 866

Debe ejecutar su código como SYSTEM alias Local System .

Para ello, puede utilizar psexec de SysInternals, o puede ejecutar el código como una tarea programada configurada para ejecutarse como SYSTEM . Eso debería permitirte cambiar cualquier permiso.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X