4

http://support.microsoft.com/kb/317277から: 重大なエラーが原因で Windows XP が再起動した場合、Windows エラー報告ツールはプロンプトを表示します...

「重大なエラーが発生したため、Windows XP が再起動されました」ということをアプリが知るにはどうすればよいですか?

4

3 に答える 3

8

注: これは、コード チャレンジに適した質問です。

ここに実行可能なコードをいくつか示しますが、他の言語で他のソリューションを自由に追加してください。


稼働時間は良い指標かもしれません:

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
于 2008-10-04T18:36:23.753 に答える
8

BSOD による再起動は、イベント ログに記録されます。お気に入りの言語のライブラリを使用して、ログでエラーを検索します。たとえば、.NET では、System.Diagnostics.EventLog クラスを調べる必要があります。WMI は、ログを検索するためのより柔軟な方法を提供する場合があります。

于 2008-10-04T18:38:54.230 に答える
2

ダンプ ファイルの生成が有効になっている場合 (または、デフォルトで有効になっているため無効になっていない場合)、最近の作成時刻でメモリまたはカーネル ダンプ ファイルを探すことができます。

于 2008-10-04T18:18:07.253 に答える