Wie man eine .NET-Anwendung immer als Administrator ausführt? Vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man eine .NET-Anwendung immer als Administrator ausführt? (Und nicht verrückt wird)



Hallo, Kollege! Wenn du jemals ein Dienstprogramm für die Arbeit mit der Registry, die Installation von Windows-Diensten geschrieben oder einfach nur versucht hast, eine Datei in C:\\Program Files zu speichern, bist du sicherlich darauf gestoßen: Die Anwendung stürzt mit einem "Access Denied"-Fehler ab, der Benutzer zuckt mit den Schultern und du kratzt dich am Kopf. Kommt dir das bekannt vor? Willkommen in der Welt der UAC (User Account Control) und des ewigen Kampfes um Administratorrechte.



Heute werden wir die beliebteste Frage auf Stack Overflow (ja, genau die mit tausenden von Aufrufen) behandeln: "How do I force my .NET application to run as administrator?". Wir werden die Antwort nicht einfach kopieren, sondern verstehen, wie es funktioniert, und schönen Code in C# schreiben. Los geht's!



Warum geht das nicht einfach so? Die Magie von UAC



Windows vertraut seit Vista Anwendungen nicht standardmäßig. Selbst wenn du als "Administrator" angemeldet bist, erhält dein Prozess ein Token mit gefilterten Rechten. Dies dient der Sicherheit: Damit ein Virus nicht einfach Systemdateien überschreiben kann.



Wenn du eine .exe startest, prüft das System ihr Manifest. Wenn dort keine spezielle Markierung vorhanden ist, läuft die Anwendung mit den Rechten eines normalen Benutzers. Unsere Aufgabe ist es, diese Markierung hinzuzufügen.



Methode 1: Manifest hinzufügen (der richtige Weg für .NET Framework)



Dies ist die standardmäßige und einfachste Methode für klassische Windows Forms- oder WPF-Anwendungen unter .NET Framework.



Schritt 1: Erstellen oder Bearbeiten der Datei app.manifest



Klicke in Visual Studio mit der rechten Maustaste auf das Projekt → Add → New Item → Application Manifest File. Wenn die Datei bereits vorhanden ist (z. B. app.manifest), öffne sie einfach.



Du siehst ein XML mit vielen Kommentaren. Uns interessiert der Abschnitt requestedExecutionLevel. Bringe ihn in diese Form:



<?xml version="1.0" encoding="utf-8"?><assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">    <security>      <requestedPrivileges>        <!-- WICHTIG: Diese Zeile -->        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />      </requestedPrivileges>    </security>  </trustInfo></assembly>


Beachte level="requireAdministrator". Es gibt noch zwei weitere Werte:

  • asInvoker — Ausführung mit den Rechten des übergeordneten Prozesses (Standard).
  • highestAvailable — Ausführung mit den maximal verfügbaren Rechten für den aktuellen Benutzer.


Schritt 2: Manifest mit dem Projekt verknüpfen (falls nicht automatisch geschehen)



Öffne die Projekteigenschaften (rechte Maustaste auf das Projekt → Properties). Suche auf der Registerkarte Application den Bereich Resources und wähle in der Dropdown-Liste "Manifest" die Option "app.manifest" aus.



Fertig! Beim Start deiner .exe zeigt Windows sofort das UAC-Fenster an: "Möchten Sie zulassen, dass diese App Änderungen an Ihrem Gerät vornimmt?". Wenn der Benutzer auf "Ja" klickt, erhält die Anwendung volle Administratorrechte.



Methode 2: Programmatischer Neustart mit Höherstufung (für .NET Core / .NET 5+)



Diese Methode ist universell und funktioniert sogar in .NET Core, .NET 5/6/7/8 und .NET Framework. Manchmal ist ein Manifest nicht geeignet, weil:

  • Du möchtest, dass die Anwendung ohne Rechte startet, aber einige Funktionen eine Höherstufung erfordern.
  • Du eine Konsolenanwendung oder einen Dienst verwendest.


Die Idee ist einfach: Die Anwendung prüft, ob sie über Rechte verfügt. Wenn nicht, startet sie sich selbst neu, jedoch mit dem Schlüssel runas (von

Blogs

Buchempfehlungen