2012-09-30 4 views
3

는 다음 C# 코드를 가지고 : 등등GetEventLogs() 설치 이벤트 로그를 반환하지 않습니다?

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

그리고, 즉 같은 :

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); 
} 

내가, 내 출력은 다음과 같습니다 것을 실행

. 하지만 설치 로그가없는 이유는 무엇입니까? 이 코드를 실행하려고 할 때 또한 :

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

을 나는 확실히 않더라도, 로그 '설치'해당 컴퓨터에 존재하지 않는 오류 메시지가 표시됩니다. 위의 코드는 설치 로그를 제외한 다른 모든 이벤트 로그에서 작동합니다.

설치 이벤트 로그에 액세스하려면 어떻게합니까? , 닷넷 프레임 워크가 시도되고 참고로

는 4.0 및 4.5이며, 대상 컴퓨터는 Windows 7 및 2008 R2입니다.

답변

3

EventLog 클래스는 관리 이벤트 로그를 다루고있다. 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 
} 

더 자세한 예제 this MDSN 기사에서 살펴 보자.

+0

당신은 그것을 못 박았습니다. 고맙습니다. 이것은 내가 필요한 것입니다. –

관련 문제