Ich muss im Voraus sagen, dass ich C# nicht wirklich kann. Allerdings würde ich an deiner Stelle dann vielleicht auf die WM_ENDSESSION - Nachricht reagieren.
Zitat:
The WM_ENDSESSION message is sent to an application after the system processes the results of the WM_QUERYENDSESSION message. The WM_ENDSESSION message informs the application whether the session is ending.
Denn mit deinem Befehl verhinderst du ja, dass dein Programm regulär beendet werden kann