
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 (TrustedInstaller
icacls.exe
Eigenschaften → 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 icacls
nicht 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 icacls
wie 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