2010-02-12 3 views
0

У меня есть служба Windows, которая должна запускаться для всех пользователей, которым необходимо знать, какой пользователь в настоящий момент зарегистрирован. Я хотел бы написать приложение, которое запускается при входе пользователя в систему, который будет уведомлять службу, что этот пользователь является тот, который в настоящее время вошел в систему. Он также должен обрабатывать, когда пользователь переключается (что означает, что оба они все еще работают).Как написать приложение, которое предупреждает службу Windows, в которой пользователь в настоящий момент зарегистрирован?

Является ли это возможным и наилучшим способом информирования моего сервиса о том, что пользователь в настоящий момент зарегистрировал и использует компьютер, и если да, то как я могу заняться созданием/установкой моего приложения, чтобы он запускался, когда пользователь регистрируется (он просто входит в папку «Автозагрузка» для этого пользователя?) и определяет, были ли переключатели пользователей?

Если нет, то что это лучший способ сделать это?

ответ

0

Я закончил использовать SENS, который я нашел по ссылке, предоставленной Эд. Эд, если вы напишете свой комментарий в качестве ответа, я буду отмечать его как правильное.

1

Проблема заключается в том, что несколько человек могут легко войти в один и тот же компьютер, чтобы то, что вам нужно на самом деле, было связано с тем, что пользователь аутентифицируется в интерактивном режиме. Используйте этот API:

http://msdn.microsoft.com/en-us/library/aa374783(VS.85).aspx

+2

Это документ о DLL-письмах об уведомлении Winlogon. Они были полезны, но Microsoft отказалась от поддержки для них, начиная с Vista. Они обсуждаются здесь: http://technet.microsoft.com/en-us/library/cc721961%28WS.10%29.aspx –

0

Если у вас уже есть службы Windows, я бы запросить локальную машину так же, как PsLoggedOn делает. Честно говоря, в зависимости от того, что вы пытаетесь сделать, вы можете просто запросить AD и определить, кто вошел в систему, где по всему домену, не полагаясь на каждую машину, чтобы управлять своим состоянием локально.

Here's an example script (первый в списке).

0

API-интерфейсы Windows поддерживают этот сценарий напрямую. В вашей функции HandlerEx уведомление SERVICE_CONTROL_SESSIONCHANGE отправляется, когда пользователь входит в систему или отключается.