Re: Нотификация о логинящемся юзере
От: Conr Россия  
Дата: 11.07.05 17:00
Оценка:
Здравствуйте, Cavaler, Вы писали:

C>Задача: при логине пользователя сервис должен запустить некий процесс с его привилегиями.


C>1a. Как, собственно, сервис может отловить этот момент? В том числе и для случая Terminal Services или нескольких пользователей для WinXP?

Самый корректный способ, имхо использовать Winlogon Notification Package — в соответствующей процедуре просто бросать event, а в сервисе его ждать. Для того, чтобы работало на Terminal Services, имя event должно начинаться с префикса 'Global\'.

C>1b. Соответственно, если сервис зпускается уже при залогиненном пользователе, надо как-то его (их) идентифицировать.

GetUserName()

C>2. Как запустить процесс от имени залогиневшегося юзера? Если у того уже запущены какие-то процессы, то последовательность OpenProcess(какой-нибудьтам) + OpenProcessToken() + CreateProcessAsUser() решает проблему, но при приходе какой-нибудь там нотификации может еще ни шелл, ничего другого не быть запущенным...

хм, вот тут не очень понял. Если нотификация о лигоне пришла, то пользователь уже залогинен. При чем тут шелл неясно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.