Я пишу простое настольное приложение на 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: Как получить информацию о событии в приложении, запущенном планировщиком задач? )