2013-11-17 2 views
0

Я пишу службу Windows с помощью WinAPI и C++. Один из вариантов заключается в том, что мне нужно отправить систему в режим сна после выхода всех пользователей из системы. Команда выхода из системы запускается из пользовательского интерфейса (который может уведомить мою службу), проблема заключается в том, как долго требуется, чтобы все учетные записи пользователей были полностью выведены из системы, прежде чем перевести систему в режим сна.Как узнать, когда все интерактивные пользователи вышли из системы?

Сначала я начал вводить искусственную задержку с момента выдачи команды выхода из системы и перед входом в спящий режим, но в ситуации, когда какая-то учетная запись пользователя была настроена с перемещаемым профилем, процесс выхода из системы может значительно превысить мою задержку.

Так что любые предложения, как узнать, выходят ли все учетные записи пользователей «точно»?

+1

См. Http://stackoverflow.com/a/6273024/2786682 –

+0

@IvanGrynko: Этот подход на самом деле не работал для меня. Я попробовал, и его метод возвращает 7 зарегистрированных пользователей на моем рабочем столе Windows 8, когда это всего лишь 1. – c00000fd

ответ

0

Лучшее решение, возможно, периодически (каждые 3-5 минут) проверяет наличие активных интерактивных сеансов. Если нет - переведите систему в режим сна.

Накладные расходы на обслуживание интерактивных сеансов каждые несколько минут настолько малы, что я не думаю, что стоит приложить усилия для разработки какой-либо расширенной системы обработки событий.

Смежные вопросы