溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何淺析C++程序監(jiān)視Windows事件日志

發(fā)布時(shí)間:2021-10-27 18:14:05 來源:億速云 閱讀:621 作者:柒染 欄目:編程語言

如何淺析C++程序監(jiān)視Windows事件日志,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

主要講述如何使用C++程序中監(jiān)視Windows事件日志,還可以對程序進(jìn)行擴(kuò)充,如在事件日志記錄到特定的事件類型時(shí),發(fā)電子郵件通知用戶。

.NET 1.0/1.1托管C++程序,如果你在使用一個(gè)更高版本的 .NET,需要在工程屬性對話框中設(shè)置/clr:oldSyntax編譯選項(xiàng),或調(diào)整以下代碼使之符合新的托管語法。用于Windows事件日志的關(guān)鍵 .NET類型是Diagnostics::EventLog類。

1、定義一個(gè)托管類并實(shí)現(xiàn)事件日志通知處理程序

處理程序(OnNewLogEntry)會(huì)在"新事件日志項(xiàng)"事件引發(fā)時(shí)調(diào)用,同時(shí),請注意此處的EntryWrittenEventHandler,以下是示例代碼:

__gc class NewLogEntryEventHandler  {   public:  NewLogEntryEventHandler() {}   public:  void OnNewLogEntry(Object* sender, EntryWrittenEventArgs* e)  {   //獲取并處理最近創(chuàng)建的項(xiàng)   EventLogEntry* eentry = e->Entry;  }  };

2、實(shí)例化一個(gè)EventLog對象,并把它的EnableRaisingEvents屬性設(shè)為true
屬性EventLog::EnableRaisingEvents是一個(gè)布爾類型,其控制了在項(xiàng)目添加到EventLog對象指定的日志時(shí),是否引發(fā)事件:

EventLog* log = new EventLog("Application");  log->EnableRaisingEvents = true;

3、把事件處理程序連接到"新事件日志項(xiàng)"事件
首先,實(shí)例化定義了事件處理程序的對象(在此例中為NewLogEntryEventHandler),接著,把事件方法(OnNewLogEntry)添加到EventLog::EntryWritten的事件處理程序列表中:

NewLogEntryEventHandler* handler = new NewLogEntryEventHandler();  log->EntryWritten +=  new EntryWrittenEventHandler( handler,&NewLogEntryEventHandler::OnNewLogEntry);

4、為特定事件的處理編寫代碼

回過頭來看一個(gè)OnNewLogEntry方法,可以看到傳遞給事件處理程序的EntryWrittenEventArgs對象有一個(gè)名為EventLogEntry的成員,其包含了有關(guān)記錄項(xiàng)目的詳細(xì)情況,具體為以下屬性:

  1. ·MachineName--創(chuàng)建事件日志的電腦系統(tǒng)名。   

  2.  

  3. ·Source--創(chuàng)建此事件的事件源或程序源。  

  4.  

  5. ·Message--用戶可在事件查看器中讀取這條文本值,其描述了記錄的事件。  

  6.  

  7. ·Event Type--此值(代表了EventLogEntryType)為一個(gè)枚舉值,其代表記錄的事件類型:信息(默認(rèn))、警告、錯(cuò)誤、審核成功、審核失敗。  

  8.  

  9. ·Event ID--為有關(guān)事件程序特定的號碼。  

  10.  

  11. ·Data--此值通常用于存儲(chǔ)二進(jìn)制信息--如內(nèi)存轉(zhuǎn)儲(chǔ)--也是與事件有關(guān)的。 

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI