如何读取Windows系统事件日志(获得上次关机时间、本次开机时间等)

本文介绍了如何通过读取Windows系统事件日志,特别是EventID为6005(开机)和6006(关机)的记录,来获取系统的上次关机和本次开机时间。提供两种C++实现方法,分别使用OpenEventLog和ReadEventLog函数进行事件日志的读取和解析。
摘要由CSDN通过智能技术生成

如何读取Windows系统事件日志(获得上次关机时间、本次开机时间等)

根据开机事件的EventID6005,关机事件的EventID6006;来读出相应的时间。

(1) 读取事件日志

#include <string>

#include <stdio.h>

#include <time.h>

#include <windows.h>

using namespace std;

int ReadSystemEventLog(const char *Src, string &Result, FILE * pFile) 

{

       DWORD read_len, next_len; 

       char Buffer[256], Data[4096], *pchar; 

       HANDLE Handle = OpenEventLog(NULL, Src);

       if (Handle==NULL)

       {

              CloseHandle(Handle);

              return -1;

       }

       while(ReadEventLog(Handle, EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,1, (EVENTLOGRECORD*)Data, sizeof(Data), &read_len, &next_len))

       {

              for(short i=0; i<read_len;) 

              {

                     printf("%d/n",read_len);

                     EVENTLOGRECORD *ptr = (EVENTLOGRECORD*)(Data+i);

                     switch(ptr->EventType) //事件类型  

                     {

                     case EVENTLOG_SUCCESS:

                            pchar= "成功";  

                            break; 

            case EVENTLOG_ERROR_TYPE:

                            pchar= "错误";

                            break; 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值