>That throws an exception for me. Here's my current test code :
> Dim loEventLogReader As New EventLogReader("D:\\Event.evtx", PathType.FilePath)
> Dim loEventLogRecord As EventLogRecord = Nothing
>
> While (InlineAssignHelper(loEventLogRecord, DirectCast(loEventLogReader.ReadEvent(), EventLogRecord))) IsNot Nothing
> Try
> Dim result As Int64 = If(loEventLogRecord.Keywords, 0)
> Console.WriteLine(loEventLogRecord.TimeCreated.ToString() + ": " + result.ToString())
> Dim final As String = String.Empty
> 'Exception thrown here when accessing KeywordsDisplayNames
> For Each lcString As String In loEventLogRecord.KeywordsDisplayNames
> final += lcString & Convert.ToString(",")
> Next
> If final.Length > 0 Then
> final = final.Substring(0, final.Length - 1)
> End If
> Console.WriteLine(final)
> Catch ex As Exception
> Console.WriteLine("Exception at {0} : {1} ", loEventLogRecord.TimeCreated.ToString(), ex.Message)
> End Try
> End While
> Console.ReadLine()
Oh, and the helper method:
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
> target = value
> Return value
> End Function
I'm guessing that the error occurs because of omissions in the registry which prevents some items being resolved.
Have you been able to allocate the error being thrown at the Keywords level or at the KeywordsDisplayNames? I am guess that would be at the KeywordsDisplayNames level.
I am also assuming you get a null for result, even if you have the if() in there. Is that correct?