当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>用托管C++监督Windows事件日记</b>[VC/C++编程]

赞助商链接



  本文“<b>用托管C++监督Windows事件日记</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

随着病毒、地痞软件、广告软件等的日益增添,很多人都开始利用注册表监督程序,这些监督程序普通会在安装软件试图改正注册表时,弹出一个告诫窗口提醒用户.但是,在安全问题上,常常被忽视的地方则是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文档未阐明,假如在短时间内记录了大量的事件,能否可保证每个事件都可被引发.

·假如监督了更新分外频繁的事件日记,事件有大概不会当即引发,在事件项之间极大概会有一个滞后,接着忽然会有大量的事件告诉进入消息行列.


  以上是“<b>用托管C++监督Windows事件日记</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .