我想知道什么是Windows API函数(如果存在),它提供有关上一次Windows重新启动源的信息。有三个主要可能的原因:
我可以越多越好。但是,我至少需要知道主要原因是什么。
我需要支持Windows Vista和Windows 7。
回答:
似乎没有直接的API来获取该信息。相反,我们必须收获Windows事件日志。系统重新引导信息位于事件查看器/ Windows日志/系统中。以下是事件ID提供的各种信息:
我还没有看到断电和系统崩溃之间的区别,但这是一个好的开始。
看看Event Log API。情况a)(蓝屏,用户切断电源和弦或系统挂起)导致系统重新正常重启时留在“系统”事件日志中的注释(“系统未正确关闭”或类似情况)。您应该能够使用上面的API以编程方式访问它(老实说,我从来没有使用它,但它应该工作)。
这个article详细解释了如何找到上次启动/关闭的原因。在我的情况下,这是由于Windows SCCM推送更新,即使我在本地禁用它。有关图片的详细信息,请访问该文章。作为参考,以下是从网站复制/粘贴的步骤:
- 按Windows + R键打开“运行”对话框,键入
eventvwr.msc
,然后按Enter键。- 如果UAC提示,则单击是(Windows 7/8)或继续(Vista)。
- 在事件查看器的左窗格中,双击/点击Windows日志以展开它,单击系统以选择它,然后右键单击系统,然后单击/点击过滤当前日志。
- 请执行下面的步骤5或6,了解您希望看到的关闭事件。
- 查看所有用户关闭计算机的日期和时间 A)在事件源中,单击/点击下拉箭头并检查
USER32
框。 B)在All Event IDs字段中,键入1074
,然后单击/点击OK。 C)这将为您提供关闭电源(关闭)的列表,并在事件查看器的中间窗格顶部重新启动关闭事件类型。 D)您可以滚动浏览这些列出的事件,以查找关闭电源的事件作为关闭类型。您将注意到日期和时间,以及用户在列出的每个断电事件中关闭计算机的责任。 E)转到步骤7。- 查看计算机所有意外停机的日期和时间 A)在所有事件ID字段中,键入
6008
,然后单击/点击确定。 B)这将为您提供事件查看器中中间窗格顶部的意外关闭事件列表。您可以滚动浏览这些列出的事件,以查看每个事件的日期和时间。