在自动化测试过程中,如果碰到应用程序崩溃,往往会弹出一个”error reporting”的对话框,如果不人工关闭这个对话框的话会导致程序无法继续进行下去。所以需要禁止弹出这个对话框并启用Windows CrashDump来收集错误日志。采用如下方法进行:

WindowsXP下面

进入控制面板,在“系统→高级”选项卡中单击右下角的“错误报告”按钮,在弹出的对话框中选择“禁用错误汇报”并取消“但在发生严重错误时通知我”选项的勾选,最后点击“确定”退出后即可生效(见图)。

这样的操作实际上是修改了注册表里面的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\ErrorReporting下的DoReport和ShowUI键值,也可以通过命令直接修改:

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\ErrorReporting /v DoReport /t REG_DWORD /d 0 /f

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\ErrorReporting /v ShowUI /t REG_DWORD /d 0 /f

然后再设置使用drwtsn32.exe来收集crash dump:

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug” /v Auto /t REG_SZ /d “1” /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug” /v Debugger /t REG_SZ /d “drwtsn32 -p %ld -e %ld -g” /f

 

 

Windows 7下面:

因为Windows 7下面已经没有drwtsn32.exe了,而是使用WER(Windows Error Reporting)来报告application error以及收集crash dump。所以直接修改注册表:

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting” /v Disabled /t REG_DWORD /d 0 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting” /v LoggingDisabled /t REG_DWORD /d 0 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting” /v ForceQueue /t REG_DWORD /d 1 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting” /v DisableQueue /t REG_DWORD /d 0 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting” /v MaxQueueCount /t REG_DWORD /d 50 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps” /v DumpCount /t REG_DWORD /d 16 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps” /v DumpType /t REG_DWORD /d 2 /f

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps” /v DumpFolder /t REG_EXPAND_SZ /d ^%LocalAppData^%\CrashDumps /f