Вы можете использовать OpenInputDesktop MSDN
Во время выхода из системы Input Desktop недоступен для пользователя и функция возвращает NULL.
ex: HDESK hDesk = OpenInputDesktop(0, FALSE, READ_CONTROL);
if (! HDesk) - во время выхода из системы ... - else {--normal state-- CloseHandle (hDesk);}
В Windows Vista & 7 нажатие клавиш CTRL + ALT + DELETE также приводит к недоступности рабочего стола пользователя.