来自http://support.microsoft.com/kb/317277:如果Windows XP由于严重错误而重新启动,则Windows错误报告工具会提示您...
我的应用程序如何知道"Windows XP因严重错误而重新启动"?
注意:对于代码挑战来说,这是一个很好的问题
以下是一些可执行代码,但可以随意添加其他语言的其他解决方案:
正常运行时间可能是一个很好的指示:
net stats workstation | find /i "since"
现在将该信息与读取Windows事件日志的方式相关联,例如在PowerShell中:
Get-EventLog -list | Where-Object {$_.logdisplayname -eq "System"}
并查找最后一次"Save Dump"消息
正如Michael Petrotta 所说,WMI是检索该信息的好方法.
根据更新时间,您可以进行如下查询:
Set colEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where LogFile = 'System' AND TimeWritten >= '" _ & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
轻松发现带有" Save Dump
"消息的事件日志,确认崩溃.
更多Win32_NTLogEvent
类 WMI类.
实际上,这篇微软文章查询停止事件的事件日志确实给你(完整的请求):
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
在事件日志中报告由BSOD产生的重新启动.使用您喜欢的语言库来搜索日志中的错误.例如,在.NET中,您需要查看System.Diagnostics.EventLog类.WMI可以提供更灵活的方式来搜索日志.