[ОТВЕТИТЬ]
Опции темы
06.11.2007 16:59  
Pyatak
ОС: Win 2k, Win XP SP2
Есть сервис, который запускается и работает под учетной записью system. Как из этого сервиса узнать, какой юзер сейчас залогинен, а еще лучше отлавливать события, когда пользователь входит и выходит? GetUserName() возвращает естественно 'system', т.к. сервис от имени этой учетной записи работает.

Есть мысль, получать список запущенных процессов и смотреть от чьего имени работает explorer, но это как-то чере "одно место" получается, да и проблему отлова входов выходов решает только путем периодического такого просмотра. Есть другие идеи?
 
06.11.2007 20:08  
OlegON
Опять ты не с того края начинаешь. Зачем тебе это нужно? Понятие залогиненности весьма относительное. Запустил программу от другого пользователя - вот тебе и логин со всеми окружениями и прочим. Можно по журналу аудит отслеживать. Более правильно в загрузку юзера по умолчанию забивать клиента, который по какому-нибудь протоколу (для этого люблю TCP/UDP, ибо остальные могут быть забиты правами) сообщает серверу, что кто-то залогинился. Соответственно учитывать надо, что таких может быть несколько. Если тебе важно именно до десктопа добраться, то есть что-то вроде GetWorkstation.... не помню полностью, давно было. Но для отображения всяких тултипов и прочего можно просто давать сервису 'Interact with desktop', он тогда может юзеру окошки показывать и в трее значок.
 
06.11.2007 23:38  
Pyatak
"Зачем?" - это уже вопрос второй. Мне нужно знать, когда пользователь вошел в систему и кода из нее вышел. Причем не тех, кто вошел по сети через терминалку или еще как, а именно того, кто вошел локально. Что он там после этого запускает и от чего имени, опять же вопрос второстепенный. Клиента ставить в автозагрузку в моем случае не подходит, так как клиент будет запускаться от имени вошедшего пользователя и будет иметь соответствующие ограниченные права, а также не будет работать после выхода пользователя. Мне же нужно выполнять некую работу, пока никто локально с компьютером не работает, опять же не суть какую, хоть проводить расчеты для эмулирования реакции ядерного синтеза. Еще один минус клиента из автозагрузки - пользователь может его спокойно "прибить", а вот остановить сервис у него уже прав не будет.
Остается главный вопрос, как из всех возможных "логинов" отследить именно того, кто вошел/вышел локально набрав логин+пароль в приглашении на вход в систему?
 
07.11.2007 10:17  
OlegON
Я, наверное, не очень понятно выразился. Задача клиента - интерактив с сервисом. Т.е. заходит кто-то, запускается клиент, который коннектится к основному сервису и сообщает ему необходимую информацию. Ну и забить этому клиенту в OnCloseQuery принудительный logout. Ну, а как фильтровать терминальных пользователей - придется пошукать по FAQ, я уже не помню.
 
07.11.2007 14:37  
Propil
Олег вроде уже ответил - аудит входа в систему настроить.
ну а дальше - логпарсер или экспорт в excel cпоследующим фильтром по событиям
Другое дело, если нужно в реальном времени...
Опять же можно затолкать в назначенные задания оповещалку, которая запустится при входе в систему
 
 
Опции темы



Часовой пояс GMT +3, время: 15:20.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.