Ist es möglich, dass eine C++-Anwendung, die unter Windows ausgeführt wird, Berechtigungen zur Laufzeit verliert?
Wenn beispielsweise ein Benutzer meine Anwendung als Administrator startet, es aber keinen Grund gibt, meine Anwendung als Administrator auszuführen, kann ich dann die Administrator-Rechte aufgeben?
Kurz gesagt, ich möchte Code in die main()-Funktion schreiben, der nicht benötigte Privilegien verwirft (zum Beispiel Schreibzugriff auf das Windows-Verzeichnis).
Ja, du kannst verwenden Token-Privilegien anpassen um unnötige und gefährliche Berechtigungen von Ihrem Token zu entfernen. Sie können die Berechtigung entweder deaktivieren, wenn sie nicht sofort benötigt wird (die Berechtigung kann später aktiviert werden) oder eine Berechtigung ganz von Ihrem Token entfernen.
Sie können auch ein eingeschränktes Token erstellen über CreateRestrictedToken und starten Sie Ihre Anwendung, die mit diesem eingeschränkten Token ausgeführt wird, neu. CreateRestrictedToken kann verwendet werden, um Berechtigungen zu deaktivieren und Gruppen (wie Administratorengruppe) von einem Token zu entfernen.
Kannst du vielleicht verwenden TokenGruppen anpassen um die Administratorgruppe aus dem Token Ihres laufenden Prozesses zu entfernen, aber ich habe dies noch nie bei einem bereits laufenden Prozess versucht.
Beachten Sie, dass der Schreibzugriff auf das Windows-Verzeichnis nicht durch ein Privileg abgedeckt ist. Ressourcen im System haben ACLs die regeln, wer Zugriff hat. System und Administratoren haben Schreibzugriff auf das Windows-Verzeichnis.
.