C# - Anwendung bei fehlenden Userrechten schliessen

The_Maegges

Erfahrenes Mitglied
Hallo allerseits!

Heute hab ich mal ein kleines Programmiertechnisches Problem.

Ich habe ein Konfigurationsutility für eine Anwendung geschrieben.
Da dieses auf die Registry unter LocalMachine zugreift, soll es nur laufen, wenn der aktuelle User Administratorrechte besitzt.

über die Funktion IsAdministrator() ermittle ich, ob der User Administratorrechte hat, oder nicht. Dies funktioniert soweit auch.
Sollte der User keine Administratorrechte besitzen, schmeisst das Programm eine Messagebox und sollte dann eigentlich direkt schliessen.
Dieser Code steht im Konstruktor des Hauptforms des Configutilitys:
Code:
if (!this.IsAdministrator())
            {
                MessageBox.Show("Das Ausführen dieser Anwendung erfordert Administratorrechte .\n Das Programm wird beendet.", "Fehlende Userrechte", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                this.DestroyHandle();
            }

Das Problem an der Geschichte ist nun, dass zwar die Messagebox kommt, wenn der User keine Administratorrechte hat, das Formular aber trotzdem geöffnet wird, obwohl es eigentlich über this.DestroyHandle() direkt geschlossen werden sollte.

Kann mir jemand sagen, wo da mein Denkfehler liegt und wie ich das erwartete Verhalten entsprechend realisiere?

Vielen Dank!
 
Danke für den Tipp,

leider ändert aber auch das das Anwendungsverhalten nicht.
Die Meldung kommt weiterhin, sobald man den OK Button bestätigt, wird das Hauptformular der Anwendung weiterhin angezeigt.

Ich werden mal versuchen, den Code aus der cs-Datei des Formulars in die Program.cs zu transferieren und schauen, was dann passiert ;-)

Melde mich dann nochmal
 
Nein habe ich nicht.

Habe das Problem jetzt wie folgt gelöst:

Code:
Program.cs

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            WindowsIdentity myWindowsIdentity = WindowsIdentity.GetCurrent();
            WindowsPrincipal myWindowsPrincipal = new WindowsPrincipal(myWindowsIdentity);
            if (!myWindowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
            {
                MessageBox.Show("Das Ausführen dieser Anwendung erfordert Administratorrechte.\n Das Programm wird beendet.", "Fehlende Userrechte", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Application.Exit();
            }
            else Application.Run(new Form1());
        }

Vielen Dank nochmal für die Unterstützung!
 
Zurück