3

次の C# コードを使用します。

EventLog[] eventLogs;
eventLogs = EventLog.GetEventLogs(computername);
foreach (EventLog evt in eventLogs)
{
    statusMessagesListBox.Items.Add("evt.Log.ToString(): " + evt.Log.ToString() + "\t\tevt.LogDisplayName: " + evt.LogDisplayName);
}

それを実行すると、出力は次のようになります。

evt.Log.ToString(): Application      evt.LogDisplayName: Application
evt.Log.ToString(): HardwareEvents   evt.LogDisplayName: Hardware Events
evt.Log.ToString(): Security         evt.LogDisplayName: Security

などなど。しかし、セットアップ ログがないのはなぜですか? さらに、このコードを実行しようとすると:

var eventLog = new EventLog("Setup", computer);
eventLog.Clear();
eventLog.Dispose();

ログ 'Setup' がそのコンピュータに存在しないというエラー メッセージが表示されます。上記のコードは、セットアップ ログ以外のすべてのイベント ログで機能します。

セットアップ イベント ログにアクセスするにはどうすればよいですか?

参考までに、試している .NET Framework は 4.0 と 4.5 で、ターゲット コンピューターは Windows 7 と 2008 R2 です。

4

1 に答える 1

4

このEventLogクラスは、管理イベント ログのみを扱います。SetUp イベント ログは操作ログ (イベント ビューアで確認できます) であるため、このクラスでは処理できません。

SetUp イベント ログにアクセスするには、System.Diagnostics.Eventing.Reader名前空間のクラスを使用する必要があります。以下を使用して、イベントを反復処理できます。

EventLogQuery query = new EventLogQuery("SetUp", PathType.LogName);
query.ReverseDirection = true; // this tells it to start with newest first
EventLogReader reader = new EventLogReader(query);

EventRecord eventRecord;

while ((eventRecord = reader.ReadEvent()) != null)
{
    // each eventRecord is an item from the event log
}

詳細な例については、この MDSN記事を参照してください。

于 2012-09-30T21:26:31.007 に答える