Получить TaskName из журнала событий TaskScheduler - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь получить доступ к информации, доступной на вкладке «Сведения» в окне просмотра событий.

Я понял, что события TaskScheduler недоступны через System.Diagnostics.EventLog, но вместо этого через System.Diagnostics.Eventing.

Пока у меня есть это:

var query = new EventLogQuery("Microsoft-Windows-TaskScheduler/Operational", PathType.LogName);
var reader = new EventLogReader(query);
var eventRec = reader.ReadEvent();

Но я не могу найти EventData где-нибудь в возвращаемом объекте.

Я пытаюсь найти эту информацию (Guid удален), в частности "EventData-> TaskName":

< Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
< System>
< Provider Name="Microsoft-Windows-TaskScheduler" Guid="...." /> 
< EventID>110</EventID> 
< Version>0</Version> 
< Level>4</Level> 
< Task>110</Task> 
< Opcode>0</Opcode> 
< Keywords>0x8000000000000000</Keywords> 
< TimeCreated SystemTime="2011-12-21T17:51:13.029864700Z" /> 
< EventRecordID>203307</EventRecordID> 
< Correlation ActivityID="{090...440}" /> 
< Execution ProcessID="996" ThreadID="9932" /> 
< Channel>Microsoft-Windows-TaskScheduler/Operational</Channel> 
< Computer>....</Computer> 
< Security UserID="S-1-5-18" /> 
< /System>
< EventData Name="TaskRunEvent">
**< Data Name="TaskName">\testTask</Data>** 
< Data Name="InstanceId">{090...440}</Data> 
< Data Name="UserContext">cussonsh</Data> 
< /EventData>      < /Event>

1 Ответ

1 голос
/ 22 декабря 2011

EventData находится в EventRecord.Properties .Т.е. в вашем случае это было бы eventRec.Properties.

Но эти свойства - IList, а класс EventProperty имеет только поле значения, но не имя.И я не уверен, как вы можете получить его ... Но вы все равно должны иметь возможность использовать метод EventRecord.ToXml () , чтобы получить представление XML (в точности, как вы показали), а затем получить имена /значения из этого XML.

...