全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2511
推到 Plurk!
推到 Facebook!

請問讀取事件檢視器?

 
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-04 10:04:27 IP:220.136.xxx.xxx 未訂閱
Windows的事件檢視器有辦法我們自己寫程式去parser嗎?
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-14 14:47:40 IP:220.134.xxx.xxx 未訂閱

我參考對岸的code

void __fastcall TForm1::Button7Click(TObject *Sender)
{
HANDLE hdle;
EVENTLOGRECORD *ptr;
BYTE buff[40960];
DWORD read_len, next_len;
ptr=(EVENTLOGRECORD *)&buff;
hdle=OpenEventLog("", "Security");// System
if (hdle==NULL)
{
// MessageBox("??????");
}
else
{
long mRet;
char lpszSourceName[255]={0};
char lpszComputerName[255]={0};
unsigned uStepOfString;
char* pStrings;
char szExpandedString[1024]={0};

int i = 0;
while(ReadEventLog(hdle,EVENTLOG_FORWARDS_READ|EVENTLOG_SEQUENTIAL_READ,
0,ptr,sizeof(buff),&read_len,&next_len))
{
while (read_len > 0) {
i ;
mRet=ptr->EventID;//事件id
mRet=ptr->EventType;//事件?型

mRet=ptr->TimeWritten;//
mRet=ptr->NumStrings;//
mRet=ptr->Length;//
mRet=sizeof(EVENTLOGRECORD);
strcpy(lpszSourceName, (LPTSTR)((LPBYTE)ptr mRet));//事件源
//////////////////////////////////////////////////////////////////////////
if (strcmp(lpszSourceName, "Automatic Updates") == 0) {
HANDLE handle = LoadLibrary("wuaueng.dll");
char szBuffers[256] = {0};
FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, handle,
ptr->EventCategory, 0, szBuffers, 4096, NULL);
}
//////////////////////////////////////////////////////////////////////////

mRet = strlen(lpszSourceName) 1;
strcpy(lpszComputerName, (LPTSTR)((LPBYTE)ptr mRet));//机器名
mRet = strlen(lpszComputerName) 1;
if(ptr->UserSidLength>0){;}//

/////////////////////////////////////////////////////
PSID psid = ptr->UserSidOffset (LPBYTE)ptr;
CHAR szAccName[256] = "\0";
DWORD dwLen = 256;
CHAR szDomainName[256] = "\0";
DWORD dwDoLen = 256;
SID_NAME_USE nameuse;
LookupAccountSid(lpszComputerName, psid, szAccName, &dwLen,
szDomainName, &dwDoLen, &nameuse);
/////////////////////////////////////////////////////


mRet=ptr->DataOffset-ptr->StringOffset;
if (mRet>0)//事件描述
{
pStrings=new char[mRet];
memcpy(pStrings,(LPBYTE)ptr ptr->StringOffset,mRet);
uStepOfString=0;
for(int x=0;xNumStrings;x )
{
if(x==0)
{
strcpy(szExpandedString, (TCHAR *)pStrings uStepOfString);
if(x<(UINT)ptr->NumStrings - 1)strcat(szExpandedString, ",");
}
else strcat(szExpandedString, pStrings uStepOfString);
uStepOfString = strlen(pStrings uStepOfString) 1;
}

delete [] pStrings;
}
// MessageBox(lpszSourceName,szExpandedString);
Memo1->Lines->Add(lpszSourceName);
Memo1->Lines->Add(szExpandedString);
read_len -= ptr->Length;
ptr = (EVENTLOGRECORD *)((LPBYTE)ptr ptr->Length);
}
ptr=(EVENTLOGRECORD *)&buff;
}
CloseEventLog(hdle);
}
//return 0;

}
//---------------------------------------------------------------------------

但是沒辦法讀到詳細資料,我希望看到像

http://marsblue.twbbs.org/~liming/tmp/event.JPG

紅色區域那一塊資料,不知道有沒有有這方面經驗可幫忙

系統時間:2024-07-03 0:11:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!