http://support.microsoft.com/kb/317277から: 重大なエラーが原因で Windows XP が再起動した場合、Windows エラー報告ツールはプロンプトを表示します...
「重大なエラーが発生したため、Windows XP が再起動されました」ということをアプリが知るにはどうすればよいですか?
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 クラスの詳細。
実際、この 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
BSOD による再起動は、イベント ログに記録されます。お気に入りの言語のライブラリを使用して、ログでエラーを検索します。たとえば、.NET では、System.Diagnostics.EventLog クラスを調べる必要があります。WMI は、ログを検索するためのより柔軟な方法を提供する場合があります。
ダンプ ファイルの生成が有効になっている場合 (または、デフォルトで有効になっているため無効になっていない場合)、最近の作成時刻でメモリまたはカーネル ダンプ ファイルを探すことができます。