Wann sind unter Windows tatsächlich Administratorrechte nötig? - UAC, geschützte Bereiche und wie man es am Design erkennt
· Go Komura · Windows, UAC, Sicherheit, Verteilung, Windows-Entwicklung
Bei Beratungen rund um Windows vermischen sich oft folgende Themen.
- Wann wird „Als Administrator ausführen“ überhaupt nötig?
- Warum erscheint UAC noch, obwohl ich ein Administratorkonto habe?
- Braucht eine Installation immer Administratorrechte?
- Die App soll in
Program Filesliegen – bedeutet das auch zur Laufzeit eine Erhöhung? - Was bewirkt der Unterschied zwischen
HKCUundHKLMin der Praxis konkret? - Wie baut man eine App, bei der „nur ein Teil der Vorgänge“ Administratorrechte braucht?
Diese Frage entscheidet sich nicht allein daran, „ob die Person Administrator ist“. Tatsächlich hängt sie stark davon ab, wohin geschrieben wird, wen die Änderung betrifft, und welchen geschützten Bereich des Betriebssystems sie berührt.
Dieser Artikel ordnet die Situationen, in denen unter Windows Administratorrechte benötigt werden, ausgehend von den Grundlagen von UAC, und fasst praxisnah zusammen, wie weit Standardbenutzerrechte reichen und ab wo es um Erhöhung geht. Der Inhalt basiert auf Microsofts offiziellen Informationen, die Stand März 2026 verifizierbar sind.12345
1. Zunächst das Fazit
Vorab nur die praxisrelevanten Kernaussagen.
- Ob unter Windows Administratorrechte nötig sind, entscheidet sich weniger danach, „wie beeindruckend der Vorgang ist“, als vielmehr danach, „ob er das Betriebssystem oder die gesamte Maschine betrifft“.14
- Verarbeitung, die auf nur das eigene Profil beschränkt bleibt – etwa
%AppData%,%LocalAppData%,HKCUoderDocuments–, kommt normalerweise ohne Administratorrechte aus.67 - Umgekehrt benötigt Verarbeitung, die die gesamte Maschine, alle Benutzer oder geschützte Bereiche berührt – etwa
Program Files,Windows,System32, maschinenweite Einstellungen inHKLM/HKCR, Windows-Dienste, Kernel-Treiber, die Firewall oder Aufgaben mit höchster Rechtestufe – tendenziell Administratorrechte.468910 - Wichtig ist hier, dass die Zugehörigkeit des Benutzers zur Gruppe Administrators und die Tatsache, dass die App gerade mit einem Administratorzugriffstoken läuft, zwei verschiedene Dinge sind. Ist UAC aktiviert, laufen gewöhnliche Prozesse auch bei einem Administratorbenutzer mit Standardbenutzerrechten und erhöhen nur bei Bedarf.26
- Installation bedeutet nicht zwangsläufig Administrator. Bei Designs wie der per-user-Installation, die davon ausgehen, unter
%LocalAppData%zu installieren, lässt sich ohne Administratorrechte verteilen und aktualisieren.1112 - Eine „App, die aus irgendeinem Grund jedes Mal Administratorrechte braucht“, schreibt in Wirklichkeit meist Laufzeitdaten in einen geschützten Bereich, oder deklariert im Manifest
requireAdministrator/highestAvailable.413 - Auch als künftige Richtung tendiert Windows dazu, nur im nötigen Moment ausdrücklich zu erhöhen. Administrator protection (Vorschau) in Windows 11 zeigt diese Entwicklung recht deutlich.5
Kurz gesagt ist es am praxistauglichsten, „braucht es Administratorrechte“ nicht am Titel des Nutzers, sondern an der Grenze, die die App berührt, festzumachen.
2. Was bedeutet „Administratorrechte erforderlich“ überhaupt?
Als Erstes sollte man hier Benutzer und Prozess getrennt betrachten.
UAC unter Windows ist eine Sicherheitsfunktion, die unautorisierte Änderungen am Betriebssystem verhindern soll. Auch bei Microsoft Learn wird erklärt, dass UAC benachrichtigt, wenn Änderungen vorgenommen werden, die Berechtigungen auf Administratorebene erfordern.1
Darüber hinaus heißt es in der offiziellen Beschreibung von UAC, dass Apps, die ein Administratorzugriffstoken benötigen, den Endbenutzer um Zustimmung bitten, und dass Kindprozesse das Zugriffstoken des Elternprozesses erben, wobei Eltern- und Kindprozess auf derselben Integritätsstufe laufen.2
Daraus lassen sich zwei Dinge ableiten.
2.1 Auch ein „Administratorbenutzer“ läuft nicht ständig als Administrator
Microsoft Learn erklärt, dass bei aktiviertem UAC auch Prozesse, die ein Mitglied der Gruppe Administrators startet, mit Standardbenutzerrechten laufen, sofern sie nicht ausdrücklich erhöht werden.6
Der Grund dafür ist, dass bei der Anmeldung eines Administratorbenutzers zwei Zugriffstoken erzeugt werden und im Alltag nur das eingeschränkte davon verwendet wird. Als Diagramm sieht das so aus.2
flowchart TD
L["Administratorbenutzer meldet sich an"] --> S["Windows erstellt zwei Token"]
S --> F["Gefiltertes Token<br/>entspricht Standardbenutzer"]
S --> A["Vollständiges Administratortoken<br/>wird nur bei Erhöhung verwendet"]
F --> N["Normaler App-Start<br/>auch der Explorer nutzt dies"]
N --> C["Kindprozess erbt das Token des Elternprozesses<br/>daher auch das Kind Standardbenutzer-äquivalent"]
N --> Q{"Sollte ein geschützter Bereich<br/>oder Dienst berührt werden?"}
Q -- "Nein" --> OK["Kann so ausgeführt werden"]
Q -- "Ja" --> P["UAC-Zustimmungsaufforderung"]
P --> A
A --> E["Nur erhöhte Prozesse<br/>können geschützte Bereiche ändern"]
Dass „bei einem Administratorbenutzer trotzdem jedes Mal UAC erscheint“, liegt daran, dass ein Vorgang eintrifft, der nur mit dem vollständigen Administratortoken möglich ist, während mit dem gefilterten Token gestartet wurde. Da das Token beim Start festgelegt wird, lässt sich daraus auch ablesen, dass es nachträglich nur durch das Starten eines neuen Prozesses ergänzt werden kann.
Mit anderen Worten:
- Das eigene Windows-Konto ist ein Administratorkonto
- aber die gerade per Doppelklick gestartete App läuft nicht erhöht
- daher erscheint UAC nur im Moment eines Vorgangs, der Administratorrechte benötigt
Das ist normal.
„Ich bin doch Administrator – warum reichen die Rechte trotzdem nicht?“ ist unter Windows ganz natürliches Verhalten.
2.2 Innerhalb desselben Prozesses lässt sich nicht „nur dieser eine Vorgang plötzlich als Administrator“ ausführen
UAC ist keine Magie auf Funktionsebene, sondern dreht sich darum, mit welchem Token ein Prozess läuft. Da Eltern- und Kindprozesse das Token vererben, lässt sich das Design „innerhalb eines nicht erhöhten UI-Prozesses nur im Moment eines Tastendrucks einzelne Methoden desselben Prozesses zu Administratormethoden machen“ nicht umsetzen.2
Bei Bedarf:
- in eine separate EXE auslagern
- einen Dienst nutzen
- eine Aufgabe mit höchster Rechtestufe nutzen
- erhöhtes COM nutzen
Man muss auf eine solche separate Ausführungseinheit zurückgreifen.14
Wird ohne Kenntnis dieser Voraussetzung entworfen, entsteht meist die etwas leidige Anfrage: „Wir möchten nur diese eine Schaltfläche als Administrator ausführen“.
Die hier genannten zwei Punkte sind zudem eine häufige Quelle von Missverständnissen, daher greifen wir sie in Kapitel 9 „Häufige Missverständnisse“ noch einmal im Q&A-Format auf. Für interne Erklärungen dürfte Kapitel 9 kürzer und leichter zu zitieren sein.
3. Wovon es abhängt - zunächst die Erkennungsmerkmale
Die klarsten Erkennungsmerkmale sind die folgenden drei.
- Wohin wird geschrieben?
- Wen betrifft die Änderung?
- Wird etwas berührt, das das Betriebssystem schützt?
3.1 Typische Bereiche, in denen Schreiben eine Erhöhung erfordert
Da dies die Grundlage für die folgenden Einzelabschnitte bildet, listen wir zunächst die Bereiche auf, bei denen „ein Schreibversuch eine Erhöhung erfordert“. Fast alles, was ab Kapitel 4 folgt, lässt sich einer der Zeilen dieser Tabelle zuordnen.
| Bereich | Typischer Pfad / Schlüssel | Schreibzugriff | Alternativer Ort |
|---|---|---|---|
| Programmablageort | C:\Program Files, C:\Program Files (x86) |
Erforderlich | Laufzeitdaten nach %LocalAppData% oder %ProgramData% |
| OS-Kern | C:\Windows, C:\Windows\System32 |
Erforderlich | Von der App aus nicht berühren |
| Maschinenweite Registrierung | HKEY_LOCAL_MACHINE, kurz HKLM |
Erforderlich | HKEY_CURRENT_USER, kurz HKCU |
| Dateizuordnungen u. Ä. | Maschinenseite von HKEY_CLASSES_ROOT, kurz HKCR. Entspricht faktisch HKLM\Software\Classes |
Erforderlich | HKCU\Software\Classes |
| Für alle Benutzer freigegebene Daten | C:\ProgramData |
Abhängig von der ACL | Beim Installieren einen App-Ordner anlegen und die ACL entsprechend gestalten |
| Dienstkonfiguration | SCM, ausführbare Datei und Starttyp eines Dienstes | Erforderlich | – |
| Treiber | Installation eines Kernelmodus-Treibers | Erforderlich | – |
| Firewall | Regeln der Windows-Firewall | Erforderlich | – |
| Aufgabe mit hoher Rechtestufe | HIGHEST im Taskplaner |
Erforderlich | Prüfen, ob LUA nicht ausreicht |
| Eigenes Profil | %AppData%, %LocalAppData%, HKCU, Documents |
Nicht erforderlich | Hier liegt der Standardablageort |
Klar „nicht erforderlich“ ist nur die letzte Zeile, C:\ProgramData ist bedingt, der Rest liegt komplett auf der Seite der Erhöhung. Umgekehrt gesagt entscheidet ob sich die Schreibziele der App auf diese letzte Zeile und %ProgramData% konzentrieren lassen, fast vollständig darüber, ob eine Erhöhung nötig ist.467
3.2 Entscheidungstabelle nach Vorhaben
Stellt man das von der Seite des „Vorhabens“ aus dar, ergibt sich Folgendes. Die Einstufung wurde einheitlich auf Erforderlich / Situationsabhängig / Nicht erforderlich vereinheitlicht.
| Vorhaben | Typisches Ziel | Einstufung | Anmerkung |
|---|---|---|---|
| Eigene Einstellungen, Cache, Protokolle speichern | %AppData%, %LocalAppData%, HKCU |
Nicht erforderlich | Im Prinzip reicht das hier aus |
| per-user-Installation / -Aktualisierung einer App | z. B. %LocalAppData% |
Situationsabhängig | Bei per-user-Ablageort nicht erforderlich |
| Installation / Aktualisierung für alle Benutzer | Program Files, HKLM |
Erforderlich | Weil in geschützte Bereiche geschrieben wird |
| Zur Laufzeit in geschützte Bereiche schreiben | Program Files, Windows, System32, HKLM, HKCR |
Erforderlich | Hier sollte grundsätzlich das Speicherort-Design überdacht werden |
| Registrieren / Umkonfigurieren eines Windows-Dienstes | SCM, Dienstkonfiguration | Erforderlich | CreateService / ChangeServiceConfig benötigen Administratorrechte |
| Installation eines Kernel-Treibers | Treiber / Kernel | Erforderlich | Eine Art von Vorgang, die ein Standardbenutzer nicht ausführen kann |
| Ändern von Windows-Firewall-Regeln | Firewall-Richtlinie | Erforderlich | Administrative Rechte auf diesem Gerät sind erforderlich |
Eine Aufgabe mit HIGHEST ausführen |
Taskplaner | Erforderlich | Sowohl Registrierung als auch Ausführung setzen eine Erhöhung voraus |
Ziemlich grob zusammengefasst:
- Bei Änderungen für sich selbst kommt man meist mit Standardbenutzerrechten aus
- Bei Änderungen für alle ist meist ein Administrator im Spiel
- Wird die Sicherheitsgrenze des Betriebssystems berührt, ist ein Administrator erforderlich
Betrachtet man zuerst nur diese drei Punkte, lässt sich „warum UAC erscheint“ deutlich leichter erklären.
4. Typische Fälle, in denen Administratorrechte häufig nötig sind
4.1 Installation, Aktualisierung und Deinstallation für alle Benutzer
In Microsoft Learns Erläuterung der UAC-Architektur heißt es, dass viele Installationsprogramme in Systemverzeichnisse oder Registrierungsschlüssel schreiben, wofür Standardbenutzer nicht über ausreichende Zugriffsrechte verfügen, und dass Windows Installationsprogramme erkennt und eine Erhöhung anfordert.3
Wichtig ist hier, dass nicht der Installer an sich „privilegiert“ ist, sondern eine Erhöhung nötig ist, weil das Schreibziel ein geschützter Bereich ist.
Typisch sind etwa:
- Ablage in
Program Files - Schreiben maschinenweiter Informationen nach
HKLM - COM-Registrierung oder -Integration für alle Benutzer
- Installation von Diensten oder Treibern
- Ein maschinenweiter Aktualisierungspfad
In diesen Fällen sind Administratorrechte meist erforderlich.38
4.2 Laufzeitdaten nach Program Files oder HKLM schreiben
Auch das kommt ziemlich häufig vor. Microsofts UAC-Designleitfaden erklärt, dass unnötige Erhöhungen vermieden werden sollten und viel alte Software unnötig Administratorrechte benötigt, weil sie nach HKLM / HKCR oder in die Ordner Program Files / Windows System schreibt.4
Ferner steht in der Beschreibung von Standardbenutzern ausdrücklich, dass diese weder in den Ordner Program Files noch nach HKEY_LOCAL_MACHINE schreiben können, noch systemverändernde Vorgänge durchführen können.6
Das heißt:
- Konfigurationsdateien
- Protokolle
- Caches
- Benutzerspezifischer Zustand
- Verlauf zuletzt verwendeter Elemente
Solche zur Laufzeit veränderlichen Daten im Installationsordner oder in HKLM abzulegen, führt allein schon leicht dazu, dass „diese App nur als Administrator gestartet funktioniert“.
Und das entsteht nicht selten nicht deshalb, weil die App wirklich für Administratoren gedacht ist, sondern schlicht, weil die Wahl des Speicherorts ungünstig ist.
4.3 Registrieren oder Umkonfigurieren von Windows-Diensten
Da Dienste vom Betriebssystem verwaltet werden, lassen sie sich naturgemäß nicht leichtfertig anfassen.
Die offizielle Dokumentation zu den Zugriffsrechten des Dienststeuerungs-Managers erklärt, dass für den Aufruf von CreateService SC_MANAGER_CREATE_SERVICE erforderlich ist und dass nur ein Prozess mit Administrator privileges das für CreateService nutzbare Handle öffnen kann.8
Außerdem sollte SERVICE_CHANGE_CONFIG, das für ChangeServiceConfig / ChangeServiceConfig2 benötigt wird, nur an Administratoren vergeben werden, weil sich damit die vom System ausgeführte EXE ändern lässt.8
Deshalb setzen Vorgänge wie
- das Registrieren eines Dienstes
- das Ändern der ausführbaren Datei oder des Starttyps eines Dienstes
- das Löschen eines Dienstes
- das Ändern des Sicherheitsdeskriptors eines Dienstes
Administratorrechte voraus.
4.4 Installation eines Kernel-Treibers
Microsoft Learn erklärt, dass ein Standardbenutzer systemverändernde Aufgaben wie die Installation eines kernel-mode driver nicht ausführen kann.6
Das ist eine ziemlich klare Grenze. Da Treiber auf der Kernel-Seite laufen, lassen sie sich nicht auf eine Stufe mit dem gewöhnlichen „Speichern von Einstellungen einer Benutzer-App“ stellen.
- Installation eines Gerätetreibers
- Installation eines virtuellen Treibers oder Filtertreibers
- Änderung von Komponenten, die Boot oder I/O betreffen
Bei solchen Vorgängen kann man davon ausgehen, dass Administratorrechte nötig sind.
4.5 Konfiguration von Firewall und Aufgaben mit hoher Rechtestufe
Auch die Firewall ist Teil der Sicherheitsgrenze des Betriebssystems. Microsoft Learns Anleitung zur Firewall-Konfiguration hält ausdrücklich fest, dass für die Bedienung von Windows Firewall with Advanced Security auf einem einzelnen Gerät administrative rights auf diesem Gerät erforderlich sind.9
Zum Taskplaner ist zudem definiert, dass TASK_RUNLEVEL_LUA mit minimalen Rechten und TASK_RUNLEVEL_HIGHEST mit den höchsten Rechten ausgeführt wird, und auch die schtasks-Dokumentation besagt, dass man Mitglied der Gruppe Administrators sein muss, um alle Aufgaben auf dem lokalen Computer zu planen, anzuzeigen oder zu ändern.10
Zusammengefasst liegen Konfigurationen wie
- das Hinzufügen oder Ändern von Windows-Firewall-Regeln
- das Registrieren eines bestimmten Vorgangs als Aufgabe mit höchster Rechtestufe
- das Ausführen eines Jobs unter einem anderen Benutzer oder als SYSTEM
auf der Seite, die Administratorrechte benötigt.
5. Typische Fälle, die oft tatsächlich ohne Administratorrechte auskommen
Es wirkt leicht so, als würde „Windows sofort einen Administrator verlangen“, doch tatsächlich gibt es überraschend viele Bereiche, die sich so gestalten lassen, dass keine Administratorrechte nötig sind.
5.1 Eigene Einstellungen, Cache und Protokolle
Microsoft Learn erklärt, dass sich Apps nicht auf Virtualisierung für Kompatibilität verlassen, sondern entweder in einer per-user location oder in einer computer location innerhalb von %alluserprofile% mit korrekt gesetzter ACL speichern sollten.7
In der Praxis lässt sich das mit folgender Aufteilung übersichtlich gestalten.
- Benutzerspezifisch:
%AppData%,%LocalAppData%,HKCU - Gemeinsam genutzt, aber zur Laufzeit aktualisiert:
%ProgramData%+ ACL-Design - Die ausführbare Datei selbst: geschützte Bereiche wie
Program Files
Ist diese Trennung umgesetzt, lässt sich erreichen, dass die Installation der App selbst zwar Administratorrechte braucht, die alltägliche Nutzung aber ohne Administrator auskommt.
5.2 per-user-Installation und -Aktualisierung
Auch in Microsofts offizieller Dokumentation tauchen Beispiele für per-user-Bereitstellung ganz selbstverständlich auf.
In der Dokumentation des Remote Desktop-Clients wird etwa erklärt, dass die per-user-Installation unter dem LocalAppData jedes Benutzerprofils erfolgt und der Benutzer ohne Administratorrechte aktualisieren kann.11
Auch in der OneDrive-Dokumentation heißt es, dass standardmäßig per-user installiert wird und dass bei einer per-machine-Installation der Befehl mit /allusers ausgeführt wird, wodurch in der Folge eine UAC-Aufforderung erscheint. Zudem landet per-user unter %localappdata%, per-machine unter Program Files.12
Daraus wird deutlich, dass allein das Wort „Installation“ nicht darüber entscheidet, ob Administratorrechte nötig sind.
- Installiert jeder Benutzer in seinen eigenen Bereich, kommt man teilweise ohne Administrator aus
- Wird in einen für alle Benutzer gemeinsamen Bereich installiert, ist meist ein Administrator nötig
Wichtig ist, zuerst festzulegen, ob per-user oder per-machine.
5.3 Normale UI-Bedienung und Fachlogik
Umgekehrt benötigen folgende Vorgänge für sich genommen keine Administratorrechte.
- Öffnen von Dokumenten oder Bildern
- Bearbeiten von Dateien im eigenen Profil
- HTTP- oder Datenbankkommunikation
- Ausführen von Fachlogik
- Anzeigen von Ergebnissen auf dem Bildschirm
- Lesen und Schreiben eigener Einstellungen
Wenn trotzdem „die gesamte App als Administrator ausführen“ nötig ist, liegt die Ursache meist nicht in der Kernfunktion der App, sondern darin, dass ein Randvorgang einen geschützten Bereich berührt.
6. Warum heißt es „Diese App braucht Administratorrechte“?
6.1 Das Manifest deklariert requireAdministrator
Im Anwendungsmanifest lässt sich über requestedExecutionLevel die benötigte Berechtigungsstufe deklarieren. Microsoft Learn definiert die folgenden drei.13
asInvoker: läuft mit denselben Rechten wie der startende ProzesshighestAvailable: läuft mit den höchsten verfügbaren RechtenrequireAdministrator: läuft mit Administratorrechten
Ist eine App auf requireAdministrator gesetzt, wird bei jedem Start eine Erhöhung vorausgesetzt.
Auch bei highestAvailable kann je nach Umgebung eine Erhöhung ins Spiel kommen.13
Die naheliegendste Antwort auf „warum erscheint UAC jedes Mal“ lautet daher: weil die App das so deklariert.
6.2 Die App wird von Windows’ installer detection erfasst
Die Erläuterung der UAC-Architektur besagt, dass Windows über eine installer detection technology verfügt und dass viele Installationsprogramme in protected system locations schreiben, wodurch eine Erhöhung nötig wird.3
Und das liegt nicht einfach daran, dass die Datei setup.exe heißt, sondern Windows trifft in gewissem Umfang heuristisch die Einschätzung „das sieht nach einem Installer aus“. Die offizielle Dokumentation nennt dafür folgende Kriterien.3
- 32-Bit-ausführbare Datei
- Kein
requestedExecutionLevel-Attribut vorhanden - Interaktiver Prozess eines Standardbenutzers bei aktiviertem UAC
- Der Dateiname enthält Wörter wie
install,setup,updateund Ähnliches
Dass SetupLauncher.exe oder Updater.exe plötzlich eine Erhöhung anfordern, ist daher aufgrund des Designs von Windows nicht verwunderlich.
6.3 Eine Legacy-App „lief nur zufällig“ dank Virtualisierung
Das wird ziemlich häufig missverstanden.
Microsoft Learn erklärt, dass UAC für nicht konforme Apps, die in geschützte Bereiche schreiben wollen, eine Datei- und Registrierungsvirtualisierung bereitstellt. Gleichzeitig wird ausdrücklich festgehalten, dass dies eine kurzfristige Kompatibilitätsmaßnahme ist, keine langfristige Lösung.37
Zudem hat die Virtualisierung Einschränkungen.
- Sie gilt nicht für bereits erhöhte Apps
- Sie gilt nur für 32-Bit-Apps
- Sie wird deaktiviert, sobald ein Manifest mit
requestedExecutionLevelvorhanden ist - Eigentlich sollten Apps so korrigiert werden, dass sie an den richtigen Ort schreiben
Es kann also vorkommen, dass eine alte 32-Bit-App „scheinbar auch ohne Administrator nach Program Files schreiben konnte“ – das bedeutet aber möglicherweise nicht, dass korrekt geschrieben wurde, sondern lediglich, dass in den VirtualStore ausgewichen wurde.
Aus diesem Grund kann bei Anlässen wie
- der Umstellung auf 64-Bit
- dem Hinzufügen eines Manifests
- einer Änderung der Build-Methode
- dem Voranbringen der UAC-Konformität
ein zuvor nicht sichtbarer „Designfehler beim Speicherort“ plötzlich zum Vorschein kommen.
6.4 Die zur Laufzeit berührten Orte sind von vornherein ungeeignet
In der Praxis ist das letztlich der häufigste Fall.
- Einstellungen neben der EXE speichern
- Protokolle in den Installationsordner schreiben
- Temporäre Dateien unter
Program Filesanlegen - Benutzerspezifischen Zustand nach
HKLMschreiben
Bei einer solchen Konfiguration entsteht die ziemlich unhandliche Situation, dass die App im Kern eine gewöhnliche UI ist, ihr Start aber Administratorrechte erfordert.46
Der Fall „Administrator, weil der Speicherort schlecht gewählt ist“ statt „Administrator, weil der Vorgang anspruchsvoll ist“, kommt wirklich sehr häufig vor.
6.5 Vorgehen, um festzustellen, welcher Fall bei der eigenen App zutrifft
6.1 bis 6.4 sind „Ursachentypen“, aber bei der tatsächlichen Untersuchung muss geklärt werden, welcher davon auf die eigene App zutrifft. Dafür genügen die folgenden zwei Schritte.
Schritt 1: Das requestedExecutionLevel im Manifest prüfen
Zunächst wird geprüft, ob die App selbst eine Erhöhung deklariert. Das in die EXE eingebettete Manifest lässt sich mit mt.exe aus dem Windows SDK extrahieren.
mt.exe -inputresource:MyApp.exe;#1 -out:MyApp.manifest
#1 ist die Ressourcen-ID des in die ausführbare Datei eingebetteten Manifests. Prüfen Sie im extrahierten XML, ob eine Zeile wie die folgende vorhanden ist.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Steht dort requireAdministrator, ist die Ursache mit 6.1 geklärt. Bei asInvoker liegt es nicht an der Deklaration, also weiter zu Schritt 2.
Es kann auch sein, dass gar kein Manifest eingebettet ist. Auch das ist eine wichtige Information: Eine 32-Bit-ausführbare Datei ohne requestedExecutionLevel kann sowohl unter die installer detection aus 6.2 als auch unter die Virtualisierung aus 6.3 fallen.3
Schritt 2: Prüfen, ob im VirtualStore eine Kopie entstanden ist
Als Nächstes wird geprüft, ob eine vermeintlich in einen geschützten Bereich geschriebene Datei in Wirklichkeit virtualisiert wurde. Das Umleitungsziel ist fest definiert.
dir /s /a "%LocalAppData%\VirtualStore"
Finden sich hier die Konfigurationsdateien oder Protokolle der eigenen App, bedeutet das, die App konnte nicht wirklich nach Program Files schreiben, sondern wurde in eine benutzerspezifische Kopie umgeleitet. Ein Schreibvorgang nach C:\Program Files\Contoso\Settings.ini wird zum Beispiel nach %LocalAppData%\VirtualStore\Program Files\Contoso\Settings.ini umgeleitet.3
Das Virtualisierungsziel auf der Registrierungsseite verhält sich ähnlich: Ein Schreibvorgang nach HKEY_LOCAL_MACHINE\Software wird nach HKEY_USERS\<SID des Benutzers>_Classes\VirtualStore\Machine\Software umgeleitet. Aus Sicht des aktuellen Benutzers lässt sich dasselbe sehen, wenn im Registrierungs-Editor HKEY_CURRENT_USER\Software\Classes\VirtualStore\Machine\Software geöffnet wird.7
Betrachtet man diese beiden Schritte, wird klar, ob die Ursache für „Administratorrechte erforderlich“ in der Deklaration oder im Speicherort liegt. Liegt die Ursache im Speicherort, besteht der eigentliche Weg darin, den Ablageort wie in 7.3 zu korrigieren – eine zusätzliche Erhöhung ist keine Lösung.
7. Wie lässt sich das Design gestalten, um unnötige Erhöhungen zu reduzieren?
7.1 Die Grundlage ist asInvoker
Solange die gesamte App nicht wirklich ein Systemverwaltungswerkzeug ist, lautet die Grundlinie, die gewöhnliche UI-App nicht erhöht laufen zu lassen.
Auch inhaltlich ist asInvoker im Manifest die Deklaration „läuft mit denselben Rechten wie der Aufrufer“.13
Lässt man alles – normale Bildschirmbedienung, Fachlogik und sogar das Speichern benutzerspezifischer Einstellungen – als Administrator laufen, nehmen folgende Probleme zu:
- Die Angriffsfläche wird größer
- Der Betrieb lässt sich schwerer erklären
- UAC erscheint jedes Mal
- Es wird unsichtbar, „welcher Vorgang wirklich einen Administrator braucht“
Auch Microsofts UAC-Designleitfaden erklärt, dass unnötige Erhöhungen vermieden werden sollten und Administratorrechte nur für Aufgaben nötig sein sollten, die sie wirklich brauchen.4
7.2 Nur die Administratorrechte benötigenden Vorgänge in eine separate Ausführungseinheit auslagern
Microsoft Learn stellt ausdrücklich Modelle vor, bei denen eine App mit Administratorrechte benötigenden Vorgängen dennoch als Standardbenutzer-App läuft und nur die nötigen Teile abgetrennt werden.14
Die vier gängigen sind:
- Administrator Broker Model Standardbenutzer-UI-App + Administrator-Helper-EXE
- Operating System Service Model Standardbenutzer-UI + residenter Dienst
- Elevated Task Model Standardbenutzer-UI + geplante Aufgabe mit höchster Rechtestufe
- Administrator COM Object Model Standardbenutzer-UI + erhöhtes COM
Grob lässt sich das so einteilen:
- Bei nur gelegentlichen Administratorvorgängen: Helper-EXE
- Bei ständig, unbeaufsichtigt, häufig: Dienst
- Bei kurzen, wiederkehrenden Jobs: Aufgabe mit höchster Rechtestufe
- Bei vorausgesetztem bestehendem COM: erhöhtes COM
Wie sich dieses Design in einer Windows-App konkret umsetzen lässt, wird ausführlich im separaten Artikel Wie man in einer Windows-App konkret nur die „Vorgänge, die Administratorrechte brauchen“ isoliert behandelt.
7.3 Den Ablageort von Laufzeitdaten korrekt wählen
Das Prinzip für den Speicherort ist recht einfach.
- Benutzerspezifische Daten:
HKCUoder%AppData% - Rein lokaler Cache:
%LocalAppData% - Gemeinsam genutzte, aber zur Laufzeit veränderliche Daten:
%ProgramData%+ ACL - Die ausführbare Datei selbst:
Program Files
Auch Microsoft Learn erklärt, dass Apps entweder in einer per-user location oder in %alluserprofile% (faktisch ProgramData) mit korrekt gesetzter ACL speichern sollten.7
Mit dieser Ordnung lässt sich leichter erreichen, dass nur der Installer erhöht wird, während die laufende App nicht erhöht ist.
7.4 per-user und per-machine zuerst festlegen
Das wird überraschend leicht übersehen.
- Sollte die App von jedem Benutzer selbst installiert werden können?
- Sollte sie an einem gemeinsamen Ort für alle Benutzer installiert werden?
- Wer trägt die Verantwortung für Aktualisierungen?
- Darf die ausführbare Datei aus dem Benutzerprofil heraus laufen?
Bleibt diese Entscheidung unklar, entsteht später leicht ein Durcheinander wie:
- Administrator nur für die Installation
- Administrator auch für die Ausführung
- Administrator auch für Aktualisierungen
- nur ein Teil im Benutzerkontext
Der Unterschied zwischen per-user und per-machine ist nicht bloß eine Frage der Verteilungsart, sondern das Berechtigungsdesign selbst.
8. Wohin entwickelt sich Windows künftig?
Stand März 2026 verfügt Windows 11 über eine Funktion namens Administrator protection (Vorschau). Microsoft Learn beschreibt diese Funktion als eine, die im Normalbetrieb einen deprivileged state beibehält und admin rights nur bei Bedarf just-in-time gewährt.5
Darüber hinaus erklärt Microsoft, dass vor Vorgängen, die Administratorrechte erfordern – etwa die Installation von Software, das Ändern von Systemeinstellungen wie Uhrzeit oder Registrierung, oder der Zugriff auf sensible Daten –, eine ausdrückliche Authentifizierung verlangt wird.5
Die Funktion selbst befindet sich noch in der Vorschau, und auch die allgemeine Einführung erfolgt schrittweise.5
An dieser Stelle lohnt es sich, auch die praktische Bedeutung des Vorschau-Status festzuhalten. Bei mit „Vorschau“ gekennzeichneten Funktionen können sich Verhalten und Einstellungsoptionen bis zur allgemeinen Verfügbarkeit noch ändern, und es lässt sich ohnehin nicht in jeder Umgebung aktivieren. Daher ist es derzeit sicherer, folgende Nutzungsweisen zu vermeiden.
- Unternehmensweite Ausrollung als Standardkonfiguration für den Produktivbetrieb
- Das Erhöhungsdesign der App unter der Annahme weglassen, dass diese Funktion aktiviert ist
- Diese Funktion als verpflichtende Betriebsvoraussetzung für Kundenumgebungen festlegen
Der realistische Ansatz besteht darin, das Verhalten in einer Testumgebung zu prüfen und das Design nur unter der Annahme „das wird sich künftig in diese Richtung entwickeln“ anzupassen. Umgekehrt gilt: Minimiert man Erhöhungen schon jetzt mit asInvoker als Basis, muss man nicht in Eile geraten, sobald diese Funktion allgemein verfügbar wird.
Die Richtung ist jedoch ziemlich klar.
- Kein dauerhaftes Halten eines Administratortokens
- Erhöhung nur im nötigen Moment
- Isolation erhöhter Sitzungen
- Klarere Nachvollziehbarkeit, wann, welche App und warum zum Administrator wurde
Man kann also davon ausgehen, dass ein Design nach dem Motto „läuft erst mal alles als Administrator“ künftig zunehmend schlechter passt.
9. Häufige Missverständnisse
9.1 „Ich bin Administratorbenutzer, also sollte UAC nicht erscheinen“
Es erscheint doch. Bei aktiviertem UAC laufen gewöhnliche Prozesse auch bei Mitgliedern der Gruppe Administrators nicht erhöht und erhöhen nur bei Bedarf.62
9.2 „Bei einer Installation ist immer ein Administrator nötig“
Nicht zwingend.
Es gibt Designs, die sich ohne Administratorrechte verteilen lassen, etwa eine per-user-Installation nach %LocalAppData%.1112
9.3 „Da die App in Program Files liegt, dürfen auch die Einstellungen dort gespeichert werden“
Das ist nicht in Ordnung.
Der Ablageort der ausführbaren Datei und der Speicherort für zur Laufzeit veränderliche Daten sollten getrennt werden. Auch Microsoft nennt das Schreiben nach Program Files oder HKLM zur Laufzeit als typisches Beispiel für unnötige Erhöhung.47
9.4 „Wenn man es nur als Administrator ausführt, lösen sich alle Designprobleme“
Das lösen sie nicht. Es mag vorübergehend funktionieren, doch Angriffsfläche, Betriebsfreundlichkeit, Verteilung und Supportfähigkeit verschlechtern sich meist. Zudem lässt sich nicht bequem nur ein Teil desselben Prozesses erhöhen.214
9.5 „Es hat früher funktioniert, also ist es auch heute richtig“
Das stimmt nicht unbedingt. Wenn eine alte 32-Bit-App nur dank Virtualisierung „zufällig funktioniert hat“, tritt das Problem bei der Umstellung auf 64-Bit oder beim Hinzufügen eines Manifests zutage. Virtualisierung ist eine vorübergehende Kompatibilitätsmaßnahme, keine langfristige Lösung.37
10. Zusammenfassung
Ob unter Windows Administratorrechte nötig sind, entscheidet sich kurz gesagt danach, „wohin was geändert wird“.
- Bei Änderungen für sich selbst kommt man meist mit Standardbenutzerrechten aus
- Bei Änderungen für alle Benutzer / die gesamte Maschine ist meist ein Administrator nötig
- Wird ein geschützter Bereich oder eine Sicherheitsgrenze des Betriebssystems berührt, sind Administratorrechte erforderlich
Und was in der Praxis wirklich zählt, ist, Vorgänge, die wirklich Administratorrechte benötigen, von Vorgängen, die nur wegen des Speicherorts zufällig einen Administrator benötigen, zu trennen.
Besonders in der Windows-Anwendungsentwicklung sind folgende Leitlinien recht wirksam.
- Die UI grundsätzlich nicht erhöht laufen lassen
- Administratorvorgänge in eine separate EXE / einen Dienst / eine Aufgabe auslagern
- Laufzeitdaten nach
AppData/HKCU/ProgramDataverlagern - per-user / per-machine zuerst festlegen
„Braucht es Administratorrechte“ ist keine Frage davon, wie bedeutend eine App ist. Es ist eine Frage davon, welche Grenze des Betriebssystems berührt wird.
Behält man diese Sichtweise von Anfang an im Kopf, werden das Verhalten von UAC, die Wahl der Installationsmethode und das App-Design deutlich überschaubarer.
11. Verwandte Artikel
- Wie man in einer Windows-App konkret nur die „Vorgänge, die Administratorrechte brauchen“ isoliert
- Eine Mindest-Sicherheitscheckliste für die Windows-Anwendungsentwicklung
- Windows-App-Verteilung wählen – MSI/MSIX/ClickOnce/xcopy/eigener Updater
12. Referenzlinks
-
Microsoft Learn, User Account Control. UAC ist eine Sicherheitsfunktion, die unautorisierte Änderungen am Betriebssystem verhindern soll, und benachrichtigt bei Änderungen, die Berechtigungen auf Administratorebene erfordern. ↩ ↩2 ↩3
-
Microsoft Learn, How User Account Control works. Apps, die ein Administratorzugriffstoken benötigen, unterliegen einer Zustimmungsaufforderung, und Kindprozesse erben das Token des Elternprozesses. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn, UAC Architecture. Zum Zusammenhang zwischen geschützten Bereichen, installer detection, Virtualisierung und
requestedExecutionLevel. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 -
Microsoft Learn, User Account Control (Design basics). Erklärt, dass unnötige Erhöhungen vermieden und Laufzeitschreibvorgänge nach Program Files / Windows / HKLM / HKCR unterlassen werden sollten. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Microsoft Learn, Administrator protection (preview). Zur Richtung von least privilege / just-in-time elevation in Windows 11. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, User Account Control for Game Developers. Standardbenutzer können weder nach
Program Filesnoch nachHKEY_LOCAL_MACHINEschreiben und auch keine system-changing tasks wie die Installation eines Kernel-Treibers ausführen. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 -
Microsoft Learn, Registry Virtualization. Virtualisierung ist eine vorübergehende Kompatibilitätsmaßnahme; Apps sollten per-user oder in
%alluserprofile%mit korrekt gesetzter ACL speichern. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 -
Microsoft Learn, Service Security and Access Rights. Zu den für
CreateServiceundChangeServiceConfigbenötigten Zugriffsrechten sowie deren Zusammenhang mit Administratorrechten. ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, Configure rules with group policy. Für die Bedienung von Windows Firewall with Advanced Security auf einem einzelnen Gerät sind administrative rights erforderlich. ↩ ↩2
-
Microsoft Learn, Principal.RunLevel property, TASK_RUNLEVEL_TYPE enumeration, schtasks change. Zu minimalen / höchsten Rechtestufen von Aufgaben sowie den für Aufgabenänderungen benötigten Rechten. ↩ ↩2
-
Microsoft Learn, Install the Remote Desktop client for Windows on a per-user basis with Intune or Configuration Manager. Bei der per-user-Installation erfolgt die Ablage unter dem
LocalAppDatajedes Benutzers, und die Aktualisierung ist ohne Administratorrechte möglich. ↩ ↩2 ↩3 -
Microsoft Learn, Install the sync app per-machine (Windows). OneDrive ist standardmäßig per-user; bei der per-machine-Installation mit
/alluserserscheint eine UAC-Aufforderung, und die Ablage erfolgt unterProgram Files. ↩ ↩2 ↩3 -
Microsoft Learn, Application manifests. Zu
asInvoker/highestAvailable/requireAdministratorbeirequestedExecutionLevel. ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, Developing Applications that Require Administrator Privilege. Ordnet die Trennungsmodelle Elevated Task / Service / Administrator Broker / Administrator COM ein. ↩ ↩2 ↩3
Verwandte Artikel
Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.
Warum Windows die Meldung „Der Computer wurde durch Windows geschützt“ anzeigt
Warum SmartScreen-Warnungen bei der Verteilung von Windows-Apps auftreten — eine praxisnahe Einordnung von Codesignierung, EV-/OV-Zertifi...
Was ist ClickOnce? - Funktionsweise, Updates und wo es passt oder nicht, aus praktischer Sicht
Ein Überblick über ClickOnce, die Verteilungstechnologie für .NET-Windows-Desktopanwendungen: Manifeste, Updates, Cache, Signierung sowie...
Wie Sie mit Windows Sandbox die App-Validierung beschleunigen
Wie Sie mit Windows Sandbox Probleme mit Administratorrechten isolieren, Fehler in einer sauberen Umgebung reproduzieren und fehlende Rec...
Wie die Windows-DLL-Namensauflösung funktioniert – Suchreihenfolge und SxS
Praxisnahe Übersicht zur DLL-Namensauflösung unter Windows: DLL search order, Known DLLs, loaded-module list, API set, SxS manifest und d...
Wie man in einer Windows-App konkret nur die „Vorgänge, die Administratorrechte brauchen“ isoliert
Eine konkrete Anleitung, wie Sie die UI einer Windows-App bei asInvoker belassen und nur die Vorgänge, die Administratorrechte brauchen, ...
Verwandte Themen
Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.
Technische Windows-Themen
Portal zu Windows-Entwicklung, Fehleranalyse und der Nutzung bestehender Assets.
Leistungen zu diesem Thema
Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.
Windows-App-Entwicklung
Wo im Design Vorgänge abgetrennt werden, die Administratorrechte benötigen, beeinflusst die Betriebs- und Wartungsfreundlichkeit einer Windows-App erheblich – ein Thema, das gut zur Windows-Anwendungsentwicklung passt.
Technische Beratung und Design-Review
Wo die Grenzen bei UAC, der per-user-/per-machine-Verteilung und dem Zugriff auf geschützte Bereiche gezogen werden, ist eine wichtige Designentscheidung vor der Implementierung, die sich gut im Rahmen einer technischen Beratung mit Design-Review klären lässt.
Häufige Fragen
Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.
- Warum erscheint die Meldung „Für den angeforderten Vorgang sind Administratorrechte erforderlich“?
- Weil die App eine Grenze berührt, die sich auf das Betriebssystem oder die gesamte Maschine auswirkt. Typisch sind das Schreiben in geschützte Bereiche wie Program Files, Windows, System32 oder HKLM, das Registrieren oder Umkonfigurieren von Windows-Diensten, die Installation eines Kernel-Treibers oder das Ändern von Firewallregeln. Auch wenn im Manifest der App requireAdministrator deklariert ist, oder wenn der Dateiname Wörter wie install / setup / update enthält und dadurch von Windows' installer detection erfasst wird, wird eine Erhöhung angefordert. Sehr häufig liegt es nicht daran, dass der Vorgang anspruchsvoll ist, sondern schlicht daran, dass der Speicherort für Einstellungen oder Protokolle in einem geschützten Bereich liegt.
- Warum erscheint UAC, obwohl ich ein Administratorkonto verwende?
- Weil bei aktiviertem UAC auch Prozesse, die von einem Mitglied der Gruppe Administrators gestartet wurden, mit Standardbenutzerrechten laufen, solange sie nicht ausdrücklich erhöht werden. Auch wenn das eigene Windows-Konto ein Administratorkonto ist, läuft die gerade gestartete App nicht erhöht, und dass UAC nur im Moment eines Vorgangs erscheint, der Administratorrechte benötigt, ist unter Windows ganz normales Verhalten. Man muss die Zugehörigkeit des Benutzers zur Gruppe Administrators und die Tatsache, dass die App gerade mit einem Administratorzugriffstoken läuft, als zwei getrennte Dinge betrachten.
- Braucht die Installation einer App zwingend Administratorrechte?
- Nicht zwingend. Bei einer per-user-Installation unter %LocalAppData% gibt es Designs, die sich ohne Administratorrechte verteilen und aktualisieren lassen. Als konkretes Beispiel: Die per-user-Installation des Remote Desktop-Clients landet im LocalAppData jedes Benutzerprofils und lässt sich ohne Administratorrechte aktualisieren, und auch OneDrive wird standardmäßig per-user installiert. Administratorrechte werden eher bei einer für alle Benutzer gedachten (per-machine) Installation benötigt, die nach Program Files oder HKLM schreibt. Ob per-user oder per-machine, ist keine Frage der Verteilungsart, sondern das Berechtigungsdesign selbst – deshalb sollte das zuerst festgelegt werden.
- Lässt sich nur ein Teil der Vorgänge einer App mit Administratorrechten ausführen?
- Innerhalb desselben Prozesses lässt sich nicht „nur in dem Moment, in dem diese Schaltfläche gedrückt wird, einzelne Methoden zu Administratormethoden machen“. UAC dreht sich darum, mit welchem Token ein Prozess läuft, und Eltern- und Kindprozesse vererben dieses Token. Bei Bedarf trennt man das in eine separate Ausführungseinheit ab. Die vier gängigen Modelle sind das Administrator Broker Model, das eine Standardbenutzer-UI mit einer Administrator-Helper-EXE kombiniert, das Operating System Service Model mit einem residenten Dienst, das Elevated Task Model mit einer geplanten Aufgabe höchster Rechtestufe, und das Administrator COM Object Model mit erhöhtem COM.
Autorenprofil
Profilseite des Artikelautors.
Go Komura
Geschäftsführer von KomuraSoft LLC
Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.