2011. 7. 20. 17:15
Window Event Log(윈도우 이벤트 로그) 읽기
2011. 7. 20. 17:15 in 프로그래밍/Let's Share it
필요에 따라서는 윈도우의 Event Log를 확인해야 할 경우가 있습니다.
보통, 내컴퓨터->등록정보->관리에서 이벤트로그쪽이 해당된다고 볼 수 있습니다.
여러가지 인터넷에서 공유되는 Source등을 통합하여 하나의 쉬운 Class로 개발이 가능토록 하였습니다.
사용법은 아래와 같습니다.
#include "EventLogHelper.h" ... { CEventLogHelper::CArrayEventLog cArrayLog; CEventLogHelper::GetList(TEXT("Application"), cArrayLog"); ... // CArray 형태인 cArrayLog를 사용한다. ... for (i=0; i<cArrayLog.GetCount(); i++) { cArrayLog[i].lpszSourceName; cArrayLog[i].lpszContents; ... } CEventLogHelper::RemoveAll(cArrayLog); ... } |
즉, 위에서와 같이 GetList와 RemoveAll 두개의 API만 사용하면 됩니다.
VOID
CEventLogHelper::GetList
CEventLogHelper::GetList
IN LPCTSTR lpszSourceName
OUT CArrayEventLog& cArrayEventLog
OUT CArrayEventLog& cArrayEventLog
Event Log를 가져옵니다.
가져올 Event Log Source Name 만을 받아들입니다.
즉, "응용 프로그램"인 경우 "Application"을 전달하면 됩니다.
그러면, CArrayEventLog 값을 채워줍니다. 물론, 시간이 오래 걸릴 수 있습니다.
해당 Array는 CArray 형태이며, CEventLogHelper::ST_EVENTLOG_NODE가 Node입니다.
해당 구조체에는, 시간, SourceName(정확히는 Publisher Name), Type, Category, EventId, User, Computer, 그리고 Contents를 가집니다.
해당 구조체의 값들은 위 그림에 있는 윈도우 이벤트 뷰어의 UI와 일맥 상통하니 직접 확인해 보시기 바랍니다.
VOID
CEventLogHelper::RemoveAll
CEventLogHelper::RemoveAll
IN OUT CArrayEventLog& cArray
GetList로 얻어진 Array를 Clear 시켜주는 함수입니다.
(ps)
GetList 함수 자체가 시간이 걸릴 수 있습니다.
함수를 따라가 보면 내부에 for (;;) Loop가 있는데, 조금 수정을 하면 Progress 정보등을 전달해 줄 수 있으리라 봅니다.
'프로그래밍 > Let's Share it' 카테고리의 다른 글
[ATL/MFC/C++] Ini Parser(ini 파서) (0) | 2011.11.30 |
---|---|
concat과 printf를 동시에 수행하는 함수 공유 (0) | 2011.10.14 |
Proxy 서버 구하기 (자동 구성 스크립트, pac) (0) | 2011.04.04 |
Windows 확장자 등록 Helper 함수 공유 (0) | 2011.03.31 |
비동기(asynchronous) Http File Downloader 공유 (0) | 2011.01.27 |