3

セキュリティ イベント ログを見て、最も頻繁に使用するマシンのユーザーを特定しようとしています。4624 イベント ID の使用を検討していますが、クエリで EventData から何かを追加する方法がわかりません。4624 イベントから標準データを取得できますが、クエリしようとしているのは、logontype が 7 であり、targetusername の詳細を読み取ることができるイベントです。

ありがとう!

            string query = @"*[System/EventID=4624]";

            EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);

            try
            {
                EventLogReader logReader = new EventLogReader(eventsQuery);

                for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent())
                {
                    Console.WriteLine(eventdetail.ProcessId);
                }
            }
            catch (EventLogNotFoundException)
            {
                Console.WriteLine("Error while reading the event logs");
                return;
            }
4

1 に答える 1

1

これを試して:

string query = @
"*[EventData[Data[@Name='LogonType']='7'] and System[(EventID='4624')]]";

EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);

try {
    EventLogReader logReader = new EventLogReader(eventsQuery);

    for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent()) {
        string description = eventdetail.FormatDescription();
        string usernametemp = description.Substring(description.IndexOf("Account Name:") + ("Account Name:").Length + 2);
        string username = usernametemp.Substring(0, usernametemp.IndexOf("\r"));
    }
} catch (EventLogNotFoundException) {
    Console.WriteLine("Error while reading the event logs");
    return;
}

クエリを整理し、説明を使用して「アカウント名」フィールドを見つけました。これがあなたの質問に答えることを願っています。その分割/部分文字列メソッドを適用して、その説明変数で実際に何かを見つけることができます。これは単なる巨大な文字列です。ログを選択したときにイベント ログ ウィンドウに表示されるテキストです。

于 2015-07-20T03:32:35.680 に答える