[For an ENGLISH version, click this line!]
Seit Microsoft mit Vista die Benutzerkontensteurung (“User account control”) einführte, stellte diese sicherheitsrelevante Neuerung Administratoren vor Herausforderungen. Besonders fragwürdig erscheint es, dass sich der Windows Explorer nur dem ersten Anschein nach mit erweiterten Rechten starten lässt. In der Grundkonfiguration erscheint zwar der Erweiterungsdialog (“Elevation prompt”), die Rechte des Anwenders werden aber nicht erweitert. Gleiches gilt unabhängig davon, ob der Anwender mit einem administrativen Konto angemeldet ist (als “Protected Admin”) oder sich impersonifiziert. Das System unterscheidet auch nicht zwischen “Run as administrator” und “Run as different user”.
Gut versteckt im Betriebssystem findet sich ein Registry-Key, der es erlaubt, den Explorer.exe-Prozess mit erweiterten Rechten zu starten:
HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}\RunAs
Löscht oder ändert man den o.g. Schlüssel (zum Beispiel in “RunA_”) lässt sich der Explorer mit erweiterten Rechten starten.
Es lauern aber weitere Fallen: Der Schlüssel ist vor leichtfertigen Änderungen dadurch geschützt, dass der “Trusted Installer” als Eigentümer eingetragen ist. Will man den Schlüssel modifizieren, muss man zunächst den Besitz übernehmen. Leider kenne ich kein Bordmittel, um diese Änderung script-gesteuert vorzunehmen: “regini.exe” kann keine Besitzrechte übernehmen, das PowerShell-Cmdlet “Set-ACL” scheitert an den vorgegebenen Zugriffsrechten (es sei denn man impersonifiziert sich zuvor als “SYSTEM”-Benutzer, was ebenfalls Zusatzwerkzeuge erfordert).
Ein Workaround bietet Helge Kleins Freeware-Werkzeug “setacl.exe”; diese populäre Werkzeug meistert, was die Bordmittel nicht schaffen.
Das vorliegende PowerShell-DemoScript “Enable-ExplorerRunAs.ps1” lädt Helges Werkzeug herunter, führt die nötigen Änderungen durch und löscht die temporären Dateien schließlich. Das Script benötigt lokale Adminrechte, die Änderungen greifen unmittelbar.
Ein abschließender Tipp noch für Windows 8/Windows Server 2012: Das Kontextemenü bietet standardmäßig keine Erweiterungsdialoge. Legt man jedoch eine Verknüpfung für “explorer.exe” neu an, so sind die nötigen Kontexteinträge sichtbar.
Download als Textdatei “Enable-ExplorerRunAs.ps1“ oder Vorschau auf GitHub
Ein Artikel des Kollegen Helge Klein erinnerte mich an dieses Demoscript, das ich schon vor einiger Zeit veröffentlichen wollte. Helges lesenswerter Artikel über die Unzulänglichkeiten des Windows Explorer findet sich hier: