Как контролировать вход / выход пользователя из Active Directory? - PullRequest
4 голосов
/ 17 ноября 2010

Я пишу простое настольное приложение на C # , которое отображает строку текста в текстовом поле всякий раз, когда кто-то входит или выключает Active Directory .Он предназначен для работы на той же машине, что и AD , под Windows Server 2008 и Windows Server 2003 .Пока все хорошо, для S2008 мне удалось вызвать ManagementEventWatcher всякий раз, когда инициируется событие с (EventCode = 4624 OR EventCode = 4634).

Вот запрос WMI, которым я сейчас занимаюсьиспользуя:

SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance isa "Win32_NTLogEvent" AND (TargetInstance.EventCode = '4624' OR TargetInstance.EventCode = '4634')

и затем я анализирую eventArgs.Properties["TargetInstance"].Properties["Message"] в поисках пользователя и IP-адреса клиента.

Странно то, что даже когда пользователь выходит из системы, я по-прежнемуполучить только одно событие с EventCode 4624. Что происходит с событием 4634?Как перехватить выход из системы?

(я также ищу обходной путь для SU: Как получить информацию о событии в приложении, запущенном планировщиком задач? )

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Машина Windows Server 2008 стала работать так же всего через несколько часов безотказной работы. Перезагрузка исправила проблему. Это всего лишь догадка, но это могло быть вызвано попыткой запустить мое приложение на компьютере S2008 слишком много раз и со слишком многими ошибками, что испортило конфигурацию операционной системы.

0 голосов
/ 18 декабря 2015

Вы можете использовать системный выход из системы и вход в систему событий.Каждое действие в системе отслеживается операционной системой Windows и доступно в журналах событий.

Вы можете использовать классы .Net для получения этих сохраненных событий.хотел бы получать системные события

EventLog log = new EventLog("System");
...