c++ - 如何将 Windows 事件日志刷新到磁盘?

标签 c++ windows events logging

我有一个 Windows 7 嵌入式设备,它经常像这样重新启动:本地应用程序将一个条目写入应用程序事件日志,几秒钟后它命令自定义电源重新启动。无法执行干净的 Windows 关闭。设备重新启动后,我检查了 Windows 事件日志并注意到最后一个条目丢失了。

有没有什么方法可以将 Windows 事件日志刷新到磁盘,这样我就不会错过最后一个条目?该应用程序是用 C++ 编写的。

谢谢, 阿德南

最佳答案

您遇到了硬件问题,因此最好的解决方案是在硬件上解决它。但继续前进。

使用 BIOS 确保计算机在电源循环后始终启动

你有一个硬件工具来执行重启。您能否重新配置它,而不是在计算机运行时执行硬电源循环,您:

  • 通知硬件电源循环工具,
  • 执行有序关机,然后
  • 使用硬件电源开关重新启动计算机?

通常有一个 bios 设置允许您指定电源循环后的操作,例如

  • 关闭电脑,
  • 打开它,
  • 仅在断电时打开它。

如果你能做到这一点,那么你仍然可以进行有序关机并等待关机完成,然后再重新开机。

软件解决方案:关闭磁盘写入缓存

目前还不清楚是什么导致了您的问题,但以下内容似乎是相关的。

这很可能是磁盘 Controller 硬件或操作系统对磁盘写入缓存的结果。

您可以通过磁盘管理工具关闭此功能:

软件解决方案:以编程方式刷新磁盘

或者,您可以通过编程方式刷新磁盘缓存。此工具可能会有所帮助:

或者确实使用 WMI 和 PowerShell:

关于c++ - 如何将 Windows 事件日志刷新到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41960623/

相关文章:

javascript - 从 d3 事件处理程序访问类函数

c++ - 谁能详细告诉我 "*this pointer"?

c++ - 如何在 C++ API 中使用 IloCplex::addMIPStart

windows - Delphi TOpenDialog/TSaveDialog 上次使用的路径

java - Apache Commons Daemon procrun 访问在 Windows 7 上被拒绝

javascript - 命名点击事件绑定(bind)javascript

C++ 列表迭代器不访问列表的内容

android - Android NDK : Nothing being drawn 中的 OpenGL ES 2.0

windows - 如何在 Windows 中拆分大文本文件?

Jquery 移动弹出窗口在页面调整大小或滚动时在错误位置重新打开