Erkennen von Höhenstufen in .NET-Anwendungen
Dieser Artikel befasst sich mit der Herausforderung, zwischen der Ausführung mit Standard-Administratorrechten und erhöhten Administratorrechten innerhalb einer .NET-Anwendung zu unterscheiden.
Bestehende Methoden und Einschränkungen
Während bestehende Methoden den Administratorstatus bestätigen können, sind sie nicht in der Lage, zwischen Standard- und erhöhtem Administratorzugriff zu unterscheiden.
Verbesserter Ansatz mit UacHelper
Eine robustere Lösung nutzt die UacHelper
Klasse:
<code class="language-csharp">using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security.Principal; using Microsoft.Win32; public static class UacHelper { ... // (Implementation details omitted for brevity) public static bool IsProcessElevated { get { if (IsUacEnabled) { // ... (Implementation details omitted for brevity) return elevationResult == TOKEN_ELEVATION_TYPE.TokenElevationTypeFull; } else { // ... (Implementation details omitted for brevity) return result; } } } }</code>
Diese Klasse ermittelt das Höhenniveau effizient, indem sie auf UAC (Benutzerkontensteuerung) prüft und die GetTokenInformation
-Funktion zur genauen Identifizierung des Höhentyps verwendet. Wenn die Benutzerkontensteuerung inaktiv ist, erfolgt standardmäßig eine WindowsPrincipal
-basierte Prüfung.
Umsetzung
Um den Erhöhungsstatus der Anwendung zu überprüfen, verwenden Sie einfach:
<code class="language-csharp">bool isElevated = UacHelper.IsProcessElevated;</code>
Diese verfeinerte Methode bietet eine zuverlässige Möglichkeit, die genaue Höhenstufe Ihrer .NET-Anwendung zu ermitteln und dabei zwischen Standardadministratorrechten und vollständig erhöhten Administratorrechten zu unterscheiden.
Das obige ist der detaillierte Inhalt vonWie kann ich in .NET zwischen Administrator- und erhöhten Administratorrechten unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!