Здравствуйте, MindGHost, Вы писали:
MGH>Отсюда вопрос — как в сервисе узнать о надвигающемся log of? MGH>Пробовал RegisterServiceCtrlHandlerEx, ServiceCtrlHandlerEx и SERVICE_CONTROL_SESSIONCHANGE. Работает, однако при получении этого эвента сессия уже мертвенькая и в реестр пользователя не попасть.
Да, в MSDN неявно указывается, что сообщения типа WTS_SESSION_LOGOFF приходят уже
после того, как соответствующее событие произошло, то есть это post-callback.
MGH>Дополнительный exe со скрытым окном или консолью в каждой пользовательской сессии тоже не вариант по некоторым причинам.
А почему, интересно ?
Запустить скрытый процесс в сессии пользователя, ждать WM_ENDSESSION...
Можно еще c SetProcessShutdownParameters поиграться, наверное, чтобы процесс
получал это сообщение по возможности раньше остальных. Чем не вариант ?
MGH>Отсюда следующий вопрос: Неужели в Windows нет оповещения служб о завершении сеанса работы пользователя? не может же такого быть, чтобы ни одной службу не надо было что-то сохранить\изменить для завершающего работу пользователя?
Можно попробовать добавить событие в системный планировщик.
Или написать Winlogon Notification Package (для систем, предшествующих Windows Vista).
Но не уверен, что будет работать так, как требуется (поймать logoff до уничтожения сессии).