views:

177

answers:

2

Create a form (I'm using .NET 2.0) with a button click event:

{ Thread.Sleep(3000); ExitWindowsEx(0,0); // shutdown }

Hit the button, press Left-WindowsKey + L to lock the desktop. The shutdown fails.

ExitWindowsEx returns 1 (Success).

I would like to know why this API fails and what else might fail when the desktop is locked?

A: 

use http://msdn.microsoft.com/en-us/library/aa376873%28VS.85%29.aspx. (InitiateSystemShutdown). ExitWindowsEx is 'interactive' logout.

Yossarian
+1  A: 

The API fails because you're on a different desktop, and are therefore no longer the interactive user. From MSDN:

Therefore, if you are not the interactive user, the function can succeed without actually shutting down the computer. If you are not the interactive user, use the InitiateSystemShutdown or InitiateSystemShutdownEx function.

Eric Brown