国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用托管C++監視Windows事件日志

2019-11-17 05:49:01
字體:
來源:轉載
供稿:網友

  隨著病毒、流氓軟件、廣告軟件等的日益增多,許多人都開始使用注冊表監視程序,這些監視程序通常會在安裝軟件試圖修改注冊表時,彈出一個警告窗口提示用戶。
然而,在安全問題上,經常被忽略的地方則是Windows事件日志--尤其是安全日志,安全日志通常記錄了Windows操作系統及要害系統應用程序的操作,如試圖非法登錄、端口掃描、及其他安全相關的事件。

  文中將演示如何在應用程序中監視Windows事件日志,當然了,還可以對程序進行擴充,如在事件日志記錄到特定的事件類型時,發電子郵件通知用戶。

  用 .NET EventLog進行監視

  文中的代碼使用了 .NET 1.0/1.1托管C++語法,假如你在使用一個更高版本的 .NET,需要在工程屬性對話框中設置/clr:oldSyntax編譯選項,或調整以下代碼使之符合新的托管語法。

  用于Windows事件日志的要害 .NET類型是Diagnostics::EventLog類。

  1、 定義一個托管類并實現事件日志通知處理程序

  處理程序(OnNewLogEntry)會在"新事件日志項"事件引發時調用,同時,請注重此處的EntryWrittenEventHandler,以下是示例代碼:

//用于監視新事件日志項的示例代碼
__gc class NewLogEntryEventHandler
{
 public:
  NewLogEntryEventHandler() {}
 public:
  void OnNewLogEntry(Object* sender, EntryWrittenEventArgs* e)
  {
   //獲取并處理最近創建的項
   EventLogEntry* entry = e->Entry;
  }
};
  2、實例化一個EventLog對象,并把它的EnableRaisingEvents屬性設為true

  屬性EventLog::EnableRaisingEvents是一個布爾類型,其控制了在項目添加到EventLog對象指定的日志時,是否引發事件:

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--創建事件日志的電腦系統名。

  ·Source--創建此事件的事件源或程序源。

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

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

  ·Event ID--為有關事件程序特定的號碼。

  ·Data--此值通常用于存儲二進制信息--如內存轉儲--也是與事件有關的。

  不足之處

  從以上可以看出,.NET使得訪問事件日志非常簡單,然而,以下也有一些有關處理事件日志時的限制條件:

  ·只能在本地系統上監視事件。

  ·.NET文檔未說明,假如在短時間內記錄了大量的事件,是否可保證每個事件都可被引發。

  ·假如監視了更新非凡頻繁的事件日志,事件有可能不會立即引發,在事件項之間很可能會有一個滯后,接著忽然會有大量的事件通知進入消息隊列。進入討論組討論。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾阳县| 二连浩特市| 巫山县| 潮州市| 依安县| 钦州市| 嘉祥县| 怀化市| 谢通门县| 远安县| 南郑县| 保亭| 甘谷县| 乌兰县| 休宁县| 临清市| 建瓯市| 南开区| 景德镇市| 平阳县| 长治县| 察隅县| 富蕴县| 闵行区| 广东省| 定西市| 寻乌县| 雅江县| 临湘市| 蓝山县| 枝江市| 昌吉市| 沁水县| 方山县| 忻城县| 武穴市| 娱乐| 美姑县| 无为县| 永善县| 融水|