2012-07-24 2 views
0

Windows 이벤트 로그는 Vista (XP 이하) 및 Vista 이상에서 다릅니다. 여기를 참조하십시오. Windows Event Logs. Vista에서는 모든 이벤트 로그를 검색하는 방법에 대해 API를 이해할 수 있습니다.Windows XP에서 모든 이벤트 로그를 검색하는 방법은 무엇입니까?

Windows XP에서이 번호는 sample code을 실행할 수 있습니다. 우리가 거기에 기입해야 할 두 가지가 있습니다 :

#define PROVIDER_NAME   L"MyEventProvider" 
#define RESOURCE_DLL   L"<path>\\Provider.dll" 

그러나 질문은 거기에 공급자 이름과 그 리소스 dll을 얻을 것입니다. 내가 생각할 수

한 가지 방법은 레지스트리 키 아래의 모든 하위 키를 반복하는 것입니다 : HKEY_LOCAL_MACHINE을 \ 시스템 \ CURRENTCONTROLSET 서비스 \ \ 이벤트 로그 \ 응용 프로그램 HKEY_LOCAL_MACHINE \ CURRENTCONTROLSET \ SYSTEM 서비스 \ \ 이벤트 로그 \ 시스템 HKEY_LOCAL_MACHINE \ 시스템 \ CurrentControlSet \ Services \ Eventlog \ Security

하위 키에서 공급자 이름과 해당 EventMessageFile을 얻을 수 있습니다 (일부 하위 키에는 hasParameterMessageFile 대신 EventMessageFile이 없음이 발견되었지만).

이렇게하는 유일한 방법입니까? 아니면 다른 더 좋은 방법이 있습니까?

답변

2

WinAPI를 사용하는 경우 레지스트리를 통해 반복하는 것만이 유일한 방법입니다. 그리고 네, 일부 공급자는 EventMessageFile을 가지고 있지 않습니다. 정상입니다. 아마도 그들은 이벤트 로그에 메시지가없는 삽입 문자열을 넣을뿐입니다 (정확하게 말할 수는 없습니다).

그러나 .Net을 사용할 수 있다면 좋은 EventLog Class이 있으며, 정말 좋은 방법을 제공합니다.

관련 문제