Restaurando 'TrustedInstaller' como propietario del ejecutable en la carpeta de Windows

Restaurando 'TrustedInstaller' como propietario del ejecutable en la carpeta de Windows

Después de cambiar la propiedad de los ejecutables en el directorio de Windows ( explorer.exe,, regedit.exeetc.), parece que no puedo volver a cambiarlos para TrustedInstallerusar icacls.exe. Usando el método GUI (Propiedades → Seguridad → Avanzado → Propietario) aunque funciona bien.

Hacer lo mismo con cualquier otro archivo en Windows, es decirnoun ejecutable, funciona bien. Intenté lo mismo en modo seguro, sin suerte.

Estos son los 2 comandos básicos que estoy usando:

takeown /F C:\Windows\explorer.exe /A
icacls C:\Windows\explorer.exe /setowner "NT SERVICE\TrustedInstaller"

Editar: Olvidé mencionar que recibo el error "Acceso denegado".

C:\Windows\System32>takeown /F c:\Windows\explorer.exe /A  
SUCCESS: The file (or folder): "c:\Windows\explorer.exe" now owned by the administrators group.

C:\Windows\System32>icacls c:\Windows\explorer.exe /setowner "NT SERVICE\TrustedInstaller"  
c:\Windows\explorer.exe: Access is denied.  
Successfully processed 0 files; Failed processing 1 files

Respuesta1

Entonces el título dice restaurar TrustedInstaller.

Parece que falta una parte; eliminando los permisos agregados del grupo de administradores.

takeown /F "C:\Windows\regedit.exe" /A
/F - file to become owner of
/A - means it will set the users group (ie. Administrators, not userxyz)

icacls "C:\Windows\regedit.exe" /grant Administrators:F
/grant - will add permissions
:F - Full Control

icacls "C:\Windows\regedit.exe" /setowner "NT SERVICE\TrustedInstaller"
/setowner - new owner

icacls "C:\Windows\regedit.exe" /grant:r Administrators:RX
/grant:r - will set permissions (removing higher ones)
:RX - Read and Execute

Referencia: https://ss64.com/nt/icacls.html

Respuesta2

El comando funciona sólo después de otorgar permisos completos al grupo de Administradores, es decir:

icacls c:\Windows\explorer.exe /grant Administrators:f  

Incluso otorgar 'Modificar' no parece ser suficiente por alguna razón.

Respuesta3

El problema, como descubrió en su respuesta, es que establecer el propietario de un archivo requiere un permiso especial, específicamente "tomar posesión". La razón por la que la GUI del editor ACL puede establecer el propietario de todos modos es que habilita laSeTakeOwnershipPrivilege privilegio, que permite anular esa verificación de acceso. Los programas que se ejecutan como administrador tienen este privilegio, pero deben habilitarlo explícitamente antes de usarlo, y aparentemente icaclsno es así.

Convenientemente, los procesos heredan los privilegios de su padre de forma predeterminada, por lo que si puede habilitar ese privilegio para el símbolo del sistema desde el que invoca icacls, la utilidad también tendrá el privilegio habilitado y podrá establecer el propietario. Puedes usar mi utilidad de código abierto.SprintDLLpara llamar a las funciones Win32 apropiadas para habilitar el privilegio en el proceso principal de SprintDLL (el símbolo del sistema):

SprintDLL call kernel32.dll!OpenProcess /return native /into prochandle (int 0x400, int 0, slotdata parentpid); newslot native token; call advapi32.dll!OpenProcessToken /return int (slotdata prochandle, int 0x20, slotptr token); newslot block luid = int 0, int 0; call advapi32.dll!LookupPrivilegeValueW /return int (nullptr, lpwstr "SeTakeOwnershipPrivilege", slotptr luid); newslot block privs = int 1, slotdata luid, int 2; call advapi32.dll!AdjustTokenPrivileges /return int (slotdata token, int 0, slotptr privs, slotsize privs as int, nullptr, nullptr)

Si funciona, el resultado dirá que las tres funciones llamadas devolvieron 1. Luego podrá usarlas icaclscomo lo intentó originalmente.

Respuesta4

Esto funcionó para mí en un sistema de 64 bits (y mi problema)...

icacls c:\Windows\SysWOW64\usercpl.dll /grant Administrators:f  
icacls "C:\Windows\SysWOW64\usercpl.dll" /setowner "NT SERVICE\TrustedInstaller"

/setowner - nuevo propietario

información relacionada