C# 6.0 – Auf NULL prüfen vereinfachen

Eine weitere Neuerung in C# 6.0 ist das vereinfachte prüfen, ob eine Variable „NULL“ ist oder ob diese bereits initialisiert worden ist. Der hierfür benötigte Operator ist das „?“, welches auch bereits bei Nullable-Typen verwendet wird. Hier ein kleines Beispiel der Verwendung:

string sTest = "Hello World";

char? thirdChar = sTest?[2]; // 'l'

sTest = null;
thirdChar = sTest?[2]; // null

sTest = "Hi";
thirdChar = sTest?[2]; // throws IndexOutOfRangeException

Auch dies erspart dem Programmierer wieder ein paar Zeilen, jedoch finde ich es zum jetzigen Zeitpunkt noch merkwürdig zu lesen. Wobei das wohl vergehen wird, wenn erst einmal die Übung mit besagter Funktionalität etabliert ist.

Auf Administratorrechte prüfen

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