我怎样才能得到Windows最后一次重启的原因

我想知道什么是Windows API函数(如果有的话)提供有关最后一个Windows重新启动源的信息。 有三个主要可能的原因:

  1. 电脑在蓝色屏幕上坠毁
  2. 用户或程序关机/重新启动计算机
  3. 失去了力量

更多的细节我可以变得更好。 不过,我需要知道至less从主要的原因是什么。

我需要支持Windows Vista和Windows 7。

回答:

似乎没有直接的API来获取这些信息。 相反,我们必须收获Windows事件日志。 系统重新启动信息位于事件查看器/ Windows日志/系统中。 以下是活动ID提供的各种信息:

  • 6005:Windows启动
  • 6006:Windows关机(正确)
  • 6008:Windows关机(意外)

我还没有得到功率损失和系统崩溃之间的差异,但这是一个好的开始。

看看事件日志API 。 情况a)(蓝屏,用户切断电源和弦或系统挂起)导致一个音符('系统没有正确关机'或类似的东西)留在'系统'事件日志下一次系统正常重新启动。 你应该能够使用上面的API以编程方式访问它(老实说,我从来没有使用它,但它应该工作)。

本文详细解释如何find上次启动/关机的原因。 在我的情况下,这是由于SCCM推送更新,即使我本地禁用了它。 访问文章的全部细节与图片。 作为参考,这里是从网站复制/粘贴的步骤:

  1. 按下Windows + R键打开“运行”对话框,inputeventvwr.msc,然后按Enter键。

  2. 如果UAC提示,请点击/点击是(Windows 7/8)或继续(Vista)。

  3. 在事件查看器的左侧窗格中,双击/点击Windows日志以展开它,单击系统select它,然后右键单击系统,然后单击/点击筛选当前日志。

  4. 请执行以下第5步或第6步,查看您希望看到什么关机事件。

  5. 查看计算机所有用户closures的date和时间

    A)点击/点击事件源右侧的下拉箭头,选中USER32框,然后点击/点击字段。

    B)在字段中input1074,然后点击/点击确定。

    C)这将给你一个closures电源(closures)的列表,并重新启动事件查看器中间窗格顶部的closurestypes的事件。

    D)您可以滚动查看这些列出的事件,以查找closures电源的事件作为closurestypes。 您将注意到date和时间,以及哪个用户负责closures每台关机事件的计算机。

    E)转到第7步。

  6. 查看计算机所有意外关机的date和时间

    A)在字段中input6008,然后点击/点击确定。

    B)这会给你一个事件查看器中间窗格顶部意外closures事件的列表。 您可以滚动查看这些列出的事件以查看每个date和时间。

  7. 完成后,您可以closures事件查看器。

您可以查看可能帮助您解决问题的事件日志