新聞中心
如何淺析C++程序監(jiān)視Windows事件日志,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供江南企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、成都網(wǎng)站制作、成都h5網(wǎng)站建設、小程序制作等業(yè)務。10年已為江南眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。
主要講述如何使用C++程序中監(jiān)視Windows事件日志,還可以對程序進行擴充,如在事件日志記錄到特定的事件類型時,發(fā)電子郵件通知用戶。
.NET 1.0/1.1托管C++程序,如果你在使用一個更高版本的 .NET,需要在工程屬性對話框中設置/clr:oldSyntax編譯選項,或調整以下代碼使之符合新的托管語法。用于Windows事件日志的關鍵 .NET類型是Diagnostics::EventLog類。
1、定義一個托管類并實現(xiàn)事件日志通知處理程序
處理程序(OnNewLogEntry)會在"新事件日志項"事件引發(fā)時調用,同時,請注意此處的EntryWrittenEventHandler,以下是示例代碼:
__gc class NewLogEntryEventHandler { public: NewLogEntryEventHandler() {} public: void OnNewLogEntry(Object* sender, EntryWrittenEventArgs* e) { //獲取并處理最近創(chuàng)建的項 EventLogEntry* eentry = e->Entry; } };
2、實例化一個EventLog對象,并把它的EnableRaisingEvents屬性設為true
屬性EventLog::EnableRaisingEvents是一個布爾類型,其控制了在項目添加到EventLog對象指定的日志時,是否引發(fā)事件:
EventLog* log = new EventLog("Application"); log->EnableRaisingEvents = true;
3、把事件處理程序連接到"新事件日志項"事件
首先,實例化定義了事件處理程序的對象(在此例中為NewLogEntryEventHandler),接著,把事件方法(OnNewLogEntry)添加到EventLog::EntryWritten的事件處理程序列表中:
NewLogEntryEventHandler* handler = new NewLogEntryEventHandler(); log->EntryWritten += new EntryWrittenEventHandler( handler,&NewLogEntryEventHandler::OnNewLogEntry);
4、為特定事件的處理編寫代碼
回過頭來看一個OnNewLogEntry方法,可以看到傳遞給事件處理程序的EntryWrittenEventArgs對象有一個名為EventLogEntry的成員,其包含了有關記錄項目的詳細情況,具體為以下屬性:
·MachineName--創(chuàng)建事件日志的電腦系統(tǒng)名。
·Source--創(chuàng)建此事件的事件源或程序源。
·Message--用戶可在事件查看器中讀取這條文本值,其描述了記錄的事件。
·Event Type--此值(代表了EventLogEntryType)為一個枚舉值,其代表記錄的事件類型:信息(默認)、警告、錯誤、審核成功、審核失敗。
·Event ID--為有關事件程序特定的號碼。
·Data--此值通常用于存儲二進制信息--如內存轉儲--也是與事件有關的。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
網(wǎng)站題目:如何淺析C++程序監(jiān)視Windows事件日志
網(wǎng)站地址:http://www.ef60e0e.cn/article/jjopgh.html