当前位置:   article > 正文

C/C++ 查询系统日志_c++ 读取系统日志

c++ 读取系统日志

使用 C++ 操作命令行,并接收命令行返回信息,通过 Dos 命令获取 Windows 系统日志。

wevtutil是Windows的一个命令行实用工具,用于管理事件日志。通过使用wevtutil命令,可以查询、导出、清除和管理Windows事件日志。

 Wevtutil 命令介绍

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc732848(v=ws.11)

文档上介绍的很全,我就不一一列举了,这里只说下我用到的一行命令:

意思就是打印最近三条系统日志

下面是接收命令行返回信息的代码:

  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. int execmd(char* cmd, char* result) {
  5. char buffer[128]; // 缓冲区
  6. FILE* pipe = _popen(cmd, "r"); // 管道
  7. // 管道打开失败
  8. if (!pipe){return 0;}
  9. // 检测管道中的结束符,0表示没有结束
  10. while(!feof(pipe)){
  11. // 从管道中读取数据
  12. if (fgets(buffer, 128, pipe)) {
  13. // 拼接 char
  14. strcat(result, buffer);
  15. }
  16. }
  17. //关闭管道
  18. _pclose(pipe);
  19. return 1;
  20. }
  21. int main()
  22. {
  23. char result[0x7ffff] = ""; // 存放结果
  24. // 获取命令行返回值(保险起见这里获取 300 条日志信息)
  25. if (execmd("wevtutil qe System /c:300 /rd:true /f:text", result) == 1) {
  26. cout << result << endl;
  27. }
  28. // 查找关键数据
  29. string s = result;
  30. while ((s.find("igfx")) != -1) {
  31. cout << "找到了 igfx " << endl;
  32. break;
  33. }
  34. system("pause");
  35. return 0;
  36. }

效果图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/84875
推荐阅读
相关标签
  

闽ICP备14008679号