【问题标题】:How do I know if Windows has just recovered from a BSOD?我如何知道 Windows 是否刚刚从 BSOD 中恢复?
【发布时间】:2008-10-04 18:15:47
【问题描述】:

来自http://support.microsoft.com/kb/317277: 如果 Windows XP 因严重错误而重新启动,Windows 错误报告工具会提示您...

我的应用如何知道“Windows XP 因严重错误而重新启动”?

【问题讨论】:

    标签: windows wmi bsod


    【解决方案1】:

    注意:对于 code-challenge

    ,这是一个很好的问题

    这里有一些可执行代码,但您可以随意添加其他语言的解决方案:


    正常运行时间可能是一个很好的指标:

    net stats workstation | find /i "since"
    

    现在将该信息与读取 Windows 事件日志的方法联系起来,例如在 PowerShell 中:

    Get-EventLog -list | Where-Object {$_.logdisplayname -eq "System"}
    

    然后查找最后的“Save Dump”消息

    作为Michael Petrotta saidWMI 是检索该信息的好方法。

    根据更新时间,可以查询如下:

    Set colEvents = objWMIService.ExecQuery _
        ("Select * from Win32_NTLogEvent Where LogFile = 'System' AND
        TimeWritten >= '" _
        & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
    

    轻松发现包含“Save Dump”消息的事件日志,确认崩溃。

    Win32_NTLogEvent Class WMI 类中的更多内容。


    实际上,这篇 Microsoft 文章 Querying the Event Log for Stop Events 确实给了你(完整的请求):

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colLoggedEvents = objWMIService.ExecQuery _
         ("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'System'" _
         & " AND SourceName = 'Save Dump'")
    For Each objEvent in colLoggedEvents
        Wscript.Echo "Event date: " & objEvent.TimeGenerated
        Wscript.Echo "Description: " & objEvent.Message
    Next
    

    【讨论】:

    • 请注意,示例 2 和示例 3 使用“应用程序”,当它应该是“系统”时,示例 4 中的“SaveDump”可能需要“保存转储”。
    • @TomMcTwattyPants 好的。我现在无法对其进行测试,但我已经编辑了答案以反映您的评论。
    【解决方案2】:

    在事件日志中报告由 BSOD 导致的重新启动。使用您喜欢的语言的库来搜索日志以查找错误。例如,在 .NET 中,您需要查看 System.Diagnostics.EventLog 类。 WMI 可能会提供一种更灵活的方式来搜索日志。

    【讨论】:

      【解决方案3】:

      如果转储文件生成已启用(或者,由于默认情况下已启用,则未禁用),您可以查找具有最近创建时间的内存或内核转储文件。

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 1970-01-01
        • 2014-05-14
        • 2023-03-22
        • 1970-01-01
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多