Я пытаюсь получить события входа и выхода из класса Win32_NTLogEvent .Для этого я использую следующий WMI-запрос:
PATH Win32_NTLogEvent WHERE "(EventIdentifier = 4648 OR EventIdentifier = 4647 OR EventIdentifier = 4634) And TimeGenerated > '201811010000'" GET /ALL
Запрос работает нормально и в ответ выдает все соответствующие входы и выходы из системы.Проблема в том, как я могу связать оба события?Я имею в виду, как я могу связать, какой выход из системы связан с каким-либо событием входа?
Анализ (не очень понятной) документации для событий 4648 (попытка входа) и 4634 (учетная запись была отключена), похоже, что оба имеют связанный идентификатор, учитывая SubjectLogonId
для события 4648 и TargetLogonId
для события 4634.
Учитывая эту информацию, я анализирую возвращеннуюсобытия, получение идентификаторов из InsertionStrings и попытка найти связанные идентификаторы, но я не нашел ни одного.
Я что-то неправильно понял или ищу неверную информацию?
Я протестировал его в Windows 10, а также в Windows Server 2012, но я ищу что-то, что работает в максимально возможном количестве версий.
Некоторый фон:
Короче говоря, я хочузнать время входа / выхода и продолжительность сеанса для определенных дат.Я смог получить время входа и выхода для конкретного пользователя, используя следующий запрос WMI ( Win32_NetworkLoginProfile класс):
PATH Win32_NetworkLoginProfile WHERE "Name='DOMAIN\\user'" GET LastLogon, LastLogoff
Мое намерение с первым запросомэто почти то же самое, но я хочу, чтобы информация для всех пользователей без знания каждого имени пользователя.Мое лучшее предположение - использование класса Win32_NTLogEvent, как описано, но это не обязательно.