【发布时间】:2011-02-02 07:11:18
【问题描述】:
我正在从我的 Perl 脚本中调用一个命令行程序。当这些程序崩溃时,系统会提示我一个消息框,询问我是否要通知 Microsoft。由于这是一个自动化系统,如果我可以抑制该消息并继续我的脚本中的其他内容,那将是可取的。这可能吗?
【问题讨论】:
标签: windows perl command-line crash system
我正在从我的 Perl 脚本中调用一个命令行程序。当这些程序崩溃时,系统会提示我一个消息框,询问我是否要通知 Microsoft。由于这是一个自动化系统,如果我可以抑制该消息并继续我的脚本中的其他内容,那将是可取的。这可能吗?
【问题讨论】:
标签: windows perl command-line crash system
在 Windows 错误报告 (WER) 下启用此组策略应该可以解决问题(现在测试,因为我有同样的问题): https://www.raymond.cc/blog/disable-program-has-stopped-working-error-dialog-in-windows-server-2008/
如果您执行程序并且它在您的 perl 脚本中的 system() 调用中崩溃,则不会出现弹出窗口。
但请注意,该政策将是全系统的;如果您的系统用于批处理作业,则没问题。
【讨论】:
这个问题听起来不像是 Perl 问题,它听起来像是系统命令的问题。你的意思是“当这些程序崩溃时”。你的系统程序?
这取决于导致崩溃的原因。这是“Dr. Watson”错误/WinQUAL 功能,对于纯 Perl 代码确实不应该发生,如果发生,则意味着 Perl 解释器正在崩溃,并且您有 Perl 错误或正在使用崩溃的本机扩展,确保您拥有 Perl 或任何本机扩展的最新稳定版本。将其缩小到崩溃的范围。
您还可以从 Windows 控制面板完全关闭 Windows 错误报告功能。
【讨论】:
system 正在启动的程序正在崩溃,并且system 调用在对话框关闭之前不会返回。 eval 对此无济于事。对于崩溃的 Perl 解释器也无济于事。
关于如何关闭错误报告的更多信息
【讨论】:
您可能可以使用WerAddExcludedApplication function 来阻止 WER 在程序崩溃时启动。之后您应该使用WerRemoveExcludedApplication 再次恢复帽子排除。
【讨论】: