如何获取Windows上次重启的原因

时间:2010-01-26 14:46:29

标签: windows winapi shutdown reboot

我想知道什么是Windows API函数(如果存在),它提供有关上一次Windows重新启动源的信息。主要原因有三个:

  1. 计算机在蓝屏上崩溃
  2. 用户或程序关闭/重新启动计算机
  3. 失去电力
  4. 我可以越多越好。但是,我至少需要知道主要原因是什么。

    我需要支持Windows Vista和Windows 7。

    答案:

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

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

    我还没有区分掉电和系统崩溃,但这是一个好的开始。

2 个答案:

答案 0 :(得分:42)

article详细说明了如何查找上次启动/关闭的原因。在我的情况下,这是由于Windows SCCM推送更新,即使我在本地禁用它。有关图片的详细信息,请访问该文章。作为参考,以下是从网站复制/粘贴的步骤:

  
      
  1. Windows + R 键打开运行对话框,键入eventvwr.msc,然后按输入

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

  4.   
  5. 事件查看器的左侧窗格中,双击/点击 Windows日志将其展开,单击系统选择它,然后右键单击   系统,然后点击/点击过滤当前日志

  6.   
  7. 执行下面的步骤5或6,了解您希望看到的关机事件。

  8.   
  9. 查看所有用户关闭电脑的日期和时间

         

    A)在活动来源中,点击/点按下拉箭头,然后点击USER32框。

         

    B)在所有活动ID 字段中,输入1074,然后点击/点按确定

         

    C)这将为您提供关闭电源(关机)和重启的列表   关闭事件查看器中中间窗格顶部的事件类型。

         

    D)您可以滚动浏览这些列出的事件以查找事件   关闭电源时关闭电源。你会注意到日期和   时间,以及用户负责关闭计算机的时间   列出的断电事件。

         

    E)转到第7步。

  10.   
  11. 查看计算机所有意外停机的日期和时间

         

    A)在所有活动ID 字段中,输入6008,然后点击/点按确定

         

    B)这将为您提供一个意外关闭事件的列表   事件查看器中的中间窗格顶部。你可以滚动浏览这些   列出的事件,以查看每个事件的日期和时间。

  12.   

答案 1 :(得分:17)

看看Event Log API。情况a)(蓝屏,用户切断电源和弦或系统挂起)导致系统重新正常重启时留在“系统”事件日志中的注释(“系统未正确关闭”或类似情况)。你应该能够使用上面的API以编程方式访问它(老实说,我从来没有使用它,但它应该工作)。