TL; DR - Die einzige Möglichkeit besteht darin, einen anderen Prozess zu erzeugen. (A new cmd.exe
.) Wenn Sie bei der Eingabeaufforderung eine neue Instanz mit einem Zugriffstoken mit höheren Berechtigungen starten, wird immer ein neues Fenster erstellt.
Es ist nicht möglich, einem bereits laufenden Prozess zusätzliche Berechtigungen zu erteilen .
Wenn sich ein Benutzer mit Administratorrechten bei einem Windows-Computer anmeldet, auf dem die Benutzerkontensteuerung (User Account Control, UAC) aktiviert ist, werden zwei separate Zugriffstoken erstellt :
- Einer mit vollem Administratorzugriff und
- Ein zweites "gefiltertes Token" mit Standardbenutzerzugriff
Zum Zeitpunkt der Erstellung eines Prozesses (z. B. CMD.EXE
) wird ihm einer dieser beiden Zugriffstoken zugewiesen . Wenn der Prozess als Administrator mit "erhöhten Rechten" ausgeführt wird, wird das ungefilterte Zugriffstoken verwendet. Wenn dem Prozess keine Administratorrechte gewährt werden, wird das gefilterte Standardbenutzertoken verwendet.
Sobald ein Prozess erstellt wurde, kann sein Zugriffstoken nicht mehr ersetzt werden . 1 In diesem Thread von MSDN Application Security für Windows Desktop heißt es auf einem Poster, das sich als Mitglied des Windows-Kernel-Teams ausweist:
Der NT-Kernel sollte niemals den Tokenwechsel zulassen, sobald ein Prozess gestartet wurde. Dies liegt daran, dass Handles usw. in einem alten Sicherheitskontext geöffnet wurden, Inflight-Vorgänge inkonsistente Sicherheitskontexte verwenden usw. Daher ist es in der Regel nicht sinnvoll, ein Prozess-Token zu wechseln, sobald die Ausführung begonnen hat. Dies wurde jedoch erst unter Vista durchgesetzt . [Hervorhebung von mir] (Quelle danke an @Ben N )
Hinweis: Die Benutzerkontensteuerung wurde mit der Veröffentlichung von Windows Vista eingeführt .
Diese Super User- Antwort enthält zwei zusätzliche Quellen, die dasselbe bestätigen:
Daher ist es einfach nicht möglich, die Eingabeaufforderung oder einen anderen Prozess direkt zu aktivieren. Die einzige Möglichkeit besteht darin, einen anderen Prozess mit einem neuen Zugriffstoken zu erzeugen (bei Bedarf kann dies eine weitere Instanz des ursprünglichen Prozesses sein). Wenn Sie bei der Eingabeaufforderung eine neue Instanz mit einem Zugriffstoken mit höheren Berechtigungen starten, wird immer ein neues Fenster erstellt. Wenn auf dem System UAC-Eingabeaufforderungen aktiviert sind, werden diese ebenfalls ausgelöst.
1 Sie können die Berechtigungen in einem vorhandenen Zugriffstoken mit der AdjustTokenPrivileges- Funktion anpassen , jedoch gemäß MSDN :
Die AdjustTokenPrivileges-Funktion kann dem Zugriffstoken keine neuen Berechtigungen hinzufügen. Es kann nur die vorhandenen Berechtigungen des Tokens aktivieren oder deaktivieren.