Wiederherstellen von „TrustedInstaller“ als Besitzer für ausführbare Datei im Windows-Ordner

Wiederherstellen von „TrustedInstaller“ als Besitzer für ausführbare Datei im Windows-Ordner

Nachdem ich den Eigentümer von ausführbaren Dateien im Windows-Verzeichnis ( explorer.exe, , usw.) geändert habe, kann ich ihn anscheinend nicht wieder auf using regedit.exeändern . Mit der GUI-Methode (TrustedInstallericacls.exeEigenschaften → Sicherheit → Erweitert → Besitzer) funktioniert jedoch einwandfrei.

Das Gleiche mit jeder anderen Datei unter Windows zu tun,nichteine ausführbare Datei, funktioniert einwandfrei. Habe dasselbe im abgesicherten Modus versucht, kein Glück.

Dies sind die beiden grundlegenden Befehle, die ich verwende:

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

Bearbeiten: Ich habe vergessen zu erwähnen, dass ich die Fehlermeldung „Zugriff verweigert“ erhalte.

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

Antwort1

Der Titel lautet also „TrustedInstaller wiederherstellen“.

Offenbar fehlt ein Teil: die hinzugefügten Berechtigungen für die Administratorgruppe werden entfernt.

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

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

Antwort2

Der Befehl funktioniert nur, nachdem der Gruppe „Administratoren“ vollständige Berechtigungen erteilt wurden, d. h.:

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

Aus irgendeinem Grund scheint selbst das Gewähren der Berechtigung „Ändern“ nicht auszureichen.

Antwort3

Das Problem, wie Sie in Ihrer Antwort festgestellt haben, ist, dass das Festlegen des Eigentümers einer Datei eine spezielle Berechtigung erfordert, nämlich „Eigentum übernehmen“. Der Grund, warum die GUI des ACL-Editors den Eigentümer trotzdem festlegen kann, besteht darin, dass sie dieSeTakeOwnershipPrivilege Privileg, wodurch diese Zugriffsprüfung umgangen werden kann. Programme, die als Administrator ausgeführt werden, haben dieses Privileg, müssen es jedoch vor der Verwendung explizit aktivieren, was anscheinend icaclsnicht der Fall ist.

Praktischerweise erben Prozesse standardmäßig die Berechtigungen ihres übergeordneten Prozesses. Wenn Sie also diese Berechtigung für die Eingabeaufforderung aktivieren können, von der aus Sie aufrufen icacls, ist die Berechtigung auch für das Dienstprogramm aktiviert und kann den Eigentümer festlegen. Sie können mein Open-Source-Dienstprogramm verwenden.SprintDLLum die entsprechenden Win32-Funktionen aufzurufen, um die Berechtigung im übergeordneten Prozess von SprintDLL (der Eingabeaufforderung) zu aktivieren:

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)

Wenn es funktioniert, wird in der Ausgabe angezeigt, dass alle drei aufgerufenen Funktionen 1 zurückgegeben haben. Sie können es dann icaclswie ursprünglich versucht verwenden.

Antwort4

Dies hat bei mir auf einem 64-Bit-System funktioniert (und mein Problem) …

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

/setowner - neuer Besitzer

verwandte Informationen