【问题标题】:How do I suppress the "notify Microsoft" crash dialogs when I call a command from Perl?当我从 Perl 调用命令时,如何抑制“通知 Microsoft”崩溃对话框?
【发布时间】:2011-02-02 07:11:18
【问题描述】:

我正在从我的 Perl 脚本中调用一个命令行程序。当这些程序崩溃时,系统会提示我一个消息框,询问我是否要通知 Microsoft。由于这是一个自动化系统,如果我可以抑制该消息并继续我的脚本中的其他内容,那将是可取的。这可能吗?

【问题讨论】:

    标签: windows perl command-line crash system


    【解决方案1】:

    在 Windows 错误报告 (WER) 下启用此组策略应该可以解决问题(现在测试,因为我有同样的问题): https://www.raymond.cc/blog/disable-program-has-stopped-working-error-dialog-in-windows-server-2008/

    如果您执行程序并且它在您的 perl 脚本中的 system() 调用中崩溃,则不会出现弹出窗口。 但请注意,该政策将是全系统的;如果您的系统用于批处理作业,则没问题。

    【讨论】:

    • 哇!刚刚意识到你的问题已经 6 岁了。希望你现在解决这个问题:)
    【解决方案2】:

    这个问题听起来不像是 Perl 问题,它听起来像是系统命令的问题。你的意思是“当这些程序崩溃时”。你的系统程序?

    这取决于导致崩溃的原因。这是“Dr. Watson”错误/WinQUAL 功能,对于纯 Perl 代码确实不应该发生,如果发生,则意味着 Perl 解释器正在崩溃,并且您有 Perl 错误或正在使用崩溃的本机扩展,确保您拥有 Perl 或任何本机扩展的最新稳定版本。将其缩小到崩溃的范围。

    您还可以从 Windows 控制面板完全关闭​​ Windows 错误报告功能。

    【讨论】:

    • 我认为Pete 的意思是system 正在启动的程序正在崩溃,并且system 调用在对话框关闭之前不会返回。 eval 对此无济于事。对于崩溃的 Perl 解释器也无济于事。
    • 感谢指正。对不起,我真的没有很好地考虑我的答案,并且没有阅读文档就做了一个愚蠢的假设。
    【解决方案3】:
    【解决方案4】:

    您可能可以使用WerAddExcludedApplication function 来阻止 WER 在程序崩溃时启动。之后您应该使用WerRemoveExcludedApplication 再次恢复帽子排除。

    【讨论】:

    • 旁注:我相当肯定一定有更好的方法。毕竟,如果这是自动化后台作业的一部分,或者您只是从远程进行非图形 shell 访问,您会怎么做?我相当确定问题有一个正确的解决方案;这只是一个技巧。
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2021-08-16
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多