Мы разработали сетевое приложение C ++, которое должно работать как служба для Windows XP, 7, 32-разрядная система.
Чтобы приложение работало как сервис, мы использовали XYNTService
Приложение работает как сервис и работает нормально под XP.
Но я не могу видеть консоль под Windows 7, так как служба работает под локальной учетной записью SERVICE, возможно, мы не можем увидеть графический интерфейс или получить к нему какой-либо доступ, потому что он работает в другом сеансе winlogon.
Так может кто-нибудь предложить, как мы можем сделать сервис интерактивным, чтобы пользователь мог видеть журналы на консоли, пока приложение работает как сервис?
еще
Что если я сделаю это приложение на основе трея, есть ли способ перенаправить логи в окно?
На самом деле вы можете подписаться на события входа / выхода и затем использовать WTSEnumerateSessions с CreateProcessAsUser создавать GUI каждый раз, когда пользователь входит в систему, но это не лучший выбор.
Лучше всего сделать приложение в трее, которое автоматически запускается при входе пользователя в систему, вы можете использовать любой из механизмов IPC (именованные каналы, разделяемая память, сокеты) для отправки журналов из сервиса в приложение в трее.
Других решений пока нет …