Hin und wieder ist es erforderlich, dass eine Anwendung oder Teile einer Anwendung mit Administratorrechten ausgeführt werden. Hierfür gibt es in .NET die Möglichkeit eine Überprüfung auszuführen und ggf. die Anwendung mit entsprechenden Rechten neuzustarten. Fälschlicherweise wird bei diesen Methoden oft angenommen, dass hiermit die Administratorrechte des Benutzers geprüft werden, dem ist aber nicht so – wozu auch. Es werden die Rechte geprüft mit welcher die Anwendung derzeit ausgeführt wird, nicht mehr und nicht weniger. Und natürlich kann man das so genannte UAC-Token (User Account Control) welches Windows zum Rechte setzen verwendet auch beim Start der Anwendung anfordern.
Aber zunächst einmal der einfache Teil; das Auslesen der aktuellen Rechte welche die Anwendung besitzt. Hierfür können wir uns eine Methode schreiben, welche sich lediglich dem „System.Security.Princial“-Namespace bedienen muss. Diese Methode würde wie folgt aussehen:
static bool RunAsAdmin() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if (identity != null) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } return false; }
Nun da wir die Möglichkeit haben zu bestimmen ob wir die ausreichenden Rechte haben, wäre es hilfreich ggf. die Anwendung mit Administratorrechten erneut ausführen zu können. Weiterlesen