2010-11-21 6 views
2

Aus irgendeinem Grund gibt EventLogEntry.Category eine Zahl anstelle des Text der Kategorie zurück. Es gibt dasselbe zurück wie die CategoryNumber-Eigenschaft, von der ich annehme, dass sie nicht passieren soll. Mache ich hier etwas falsch oder gibt es einen anderen Weg, den Kategorietext für einen EventLogEntry zu bekommen?Abrufen des Kategorietextes von EventLogEntry.Category

Hier ist ein Code, den Fehler zu reproduzieren:

Console.WriteLine(new EventLog("System").Entries[0].Category); 

Dies sollte so etwas wie „Keine“ oder „Service State Event“ (für Sie oder was auch immer die betreffende Kategorie ist) schreiben, sondern es schreibt " (0) ". Irgendwelche Gedanken darüber, was ich hier falsch mache?

+0

Ich habe schon versucht, diese auf eine Reihe von verschiedenen Maschinen, die alle mit dem gleichen Ergebnis. Der Kategorietext wird nie zurückgegeben, nur die Nummer. –

+0

Was zeigt der Windows Event Viewer (eventvwr) für diese Ereignisse an? Kategorienamen oder Nummern? –

+0

Die Ereignisanzeige zeigt die korrekten Kategorienamen an. –

Antwort

1

Dies ist ein Fehler in ihrer API. Ich denke nicht, dass es bald gelöst wird. Dies geschieht nur in Windows Vista und späteren Betriebssystemen. So funktioniert das tatsächlich in XP, 2000, 2003, etc.

Allerdings gibt es einen anderen Ansatz, den Sie betrachten sollten. Offenbar ist dies der Ansatz der unteren Ebene, um programmgesteuert auf das Ereignisprotokoll zuzugreifen. Die Technologie ist Windows Management Instrumentation (WMI) und es gibt eine Schnittstelle dazu in .NET und damit C#.

Schauen Sie sich diese Links gilt:

Windows Management Instrumentation (WMI) Tutorial

Monitoring Remote Log Remotely using WMI in C# and .NET

Reading Widsows Event Log

Verwandte Themen