Re[3]: SERVICE_CONTROL_SESSIONCHANGE
От: Mr.Cat  
Дата: 25.06.08 23:30
Оценка:
Здравствуйте, x64, Вы писали:

x64>Проблема проявляется на Windows XP и Windows Vista. На сигнал я подписан, регистрировал именно HandlerEx, не приходит он только при первом входе в систему. При последующих логинах сигнал приходит и всё работает как надо.


Хм... Похоже, сервис реально стартует после логина. Глянул в MSDN, там предлагают (правда по другому поводу, но все же) вот что проверить:

To determine whether a service is running as an interactive service, call the GetProcessWindowStation function to retrieve a handle to the window station, and the GetUserObjectInformation function to test whether the window station has the WSF_VISIBLE attribute.


К примеру, можно после старта сервиса подождать несколько секунд и, если не пришел SESSIONCHANGE, проверить состояние стейшена. Если он видимый — стало быть мы пропустили логин и надо показать GUI.

PS (не по теме): А вариант связки неинтерактивного сервиса + отдельного управляющего приложения не рассматриваете? А то MS как-то интерактивные сервисы не очень жалует.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.