从http://support.microsoft.com/kb/317277: 如果Windows XP重新启动,因为一个严重的错误,Windows错误报告工具会提示你...如何知道Windows是否刚刚从BSOD中恢复?
如何我应用程序知道的“Windows XP重新启动,因为有严重错误的”?
从http://support.microsoft.com/kb/317277: 如果Windows XP重新启动,因为一个严重的错误,Windows错误报告工具会提示你...如何知道Windows是否刚刚从BSOD中恢复?
如何我应用程序知道的“Windows XP重新启动,因为有严重错误的”?
注(或者,更确切地说,没有被禁用,因为它是在默认情况下):这是一个为code-challenge
这里很好的问题是一些可执行的代码,而是随意添加其他的解决方案,在其他语言:
的正常运行时间可能是一个很好的迹象:
net stats workstation | find /i "since"
现在链接,信息与方法来读取Windows事件日志一样,说在PowerShell中:
Get-EventLog -list | Where-Object {$_.logdisplayname -eq "System"}
,寻找最后的“保存转储”消息
由于Michael Petrottasaid,WMI是检索该信息的好方法。
基于更新时间,你可以做一个查询,如:
Set colEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where LogFile = 'System' AND
TimeWritten >= '" _
& dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
轻松地用“Save Dump
”消息发现事件日志中它,确认飞机坠毁。
更多在Win32_NTLogEvent
Class WMI类。
其实,这微软文章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
你可以找一个最近创建时间内存或内核转储文件,如果转储文件生成已启用
从BSOD导致重新启动在事件日志中报告。使用您喜欢的语言来搜索日志中的错误。例如,在.NET中,您需要查看System.Diagnostics.EventLog类。 WMI可能提供更灵活的方式来搜索日志。
请注意,示例2和示例3使用“应用程序”,应该是“系统”,并且示例4中的“SaveDump”可能需要为“Save Dump”。 – CarlJohnson 2012-11-15 15:37:13