Löschen von Berechtigungen in C++ unter Windows

Lesezeit: 2 Minuten

Loschen von Berechtigungen in C unter Windows
Nitramk

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).

1641777777 954 Loschen von Berechtigungen in C unter Windows
Michael

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.

  • Wissen Sie, welche WinAPI-Aufrufe normalerweise von dem Token betroffen sind? Mir ist gerade aufgefallen, dass wenn ich benutze AdjustTokenPrivelegies() um alle Token-Privilegien zu löschen, indem Sie den Wert von setzen DisableAllPrivileges zu TRUE, es gilt nicht für alle APIs, die ich aufrufe. Wenn ich zum Beispiel alle Privilegien lösche und dann den Standard-Windows-Dialog zum Öffnen von Dateien aufrufe, kann ich immer noch mit der rechten Maustaste in das Dialogfenster klicken und “Als Administrator ausführen” auswählen und die ausgewählte Datei wird mit Administratorrechten geöffnet. Hat das Zugriffstoken nur Auswirkungen auf bestimmte APIs?

    – Daniel

    14. Mai ’18 um 9:07


.

259270cookie-checkLöschen von Berechtigungen in C++ unter Windows

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy