Windowsのクラッシュダンプログの出力設定は、以下のようなレジストリを設定することで行えるそうです。アプリがクラッシュした時に、クラッシュ情報が出力されます。(詳しくは、別途、みてください)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
“DumpType”=dword:00000002
“DumpCount”=dword:00000010
“DumpFolder”=”D:\\Test”
この設定自体は、regファイルを作成して、手動で起動していました。
ただ、アプリからボタンを押したときに、設定できるようにしたかったので
exeファイルから、ボタンがおされた時に、vbsファイルを呼び、そのvbsファイルからregファイルを実行しました。
ボタンを押すと、vbsファイルを起動する。
vbsファイル内容
1 2 3 4 5 6 7 8 9 10 11 12 |
Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") Return = objWshShell.Run ("reg.exe import D:\CrashDumpLog.reg",1,true) If Return = 0 Then MsgBox "OK" ,,"message" Else MsgBox "failed" ,,"message" End If WScript.Quit 0 |
regファイル内容
1 2 3 4 5 6 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps] "DumpType"=dword:00000002 "DumpCount"=dword:00000010 "DumpFolder"="D:\\Test" |
しかし、ボタンから実行しても、指定したレジストリーに登録されていない・・
(手動で、直接vbsファイルを起動すると、登録されます。)
どうも、ここに登録されていたようです。
起動アプリは32bitアプリなので、自動で、WOW6432Node・・以下になってしまったようです。
回避方法は、vbsファイルでreg.exeの起動をSysnativeから起動すればよいようです。
対応ソース
1 2 3 4 5 6 7 8 9 10 11 12 |
Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") Return = objWshShell.Run ("C:\Windows\Sysnative\reg.exe import D:\CrashDumpLog.reg",1,true) If Return = 0 Then MsgBox "OK" ,,"message" Else MsgBox "failed" ,,"message" End If WScript.Quit 0 |
結果
ありがとうございました。
Androidアプリを作っています。
気分転換に!
tiddlywinks – MOMOTARO The Peach Boy Ohajiki
桃太郎のおはじきゲームです。
(なんとなく遊べるゲームです)
2手以内に赤鬼をはじけ!
(ただし、ひょっとこ が鬼に当たらないように・・)