0

我正在启动这样的.exe

ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = stuff;
start.FileName = "test.exe";
try{
    using (Process proc = Process.Start(start))
    {
            proc.WaitForExit();
    ...
    }
}
catch
{
...}

从一个线程。问题是有时“test.exe”崩溃,打开一个弹出窗口说

“应用程序崩溃等等等等……在互联网上寻找解决方案等等”

预计“test.exe”会崩溃,但我需要的是或关闭弹出窗口以释放线程,或首先“捕获”exe崩溃。

代码中的 try-catch 不会捕获崩溃的 exe。

能否请你帮忙?谢谢你

4

2 回答 2

2

据我所知,您无法从您的应用程序中实现这一点。这是系统级别的设置。请参阅例如如何禁用 Windows Vista 上的“调试/关闭应用程序”对话框?有关如何禁用对话的详细信息,但请注意它必须在每台机器上设置并影响所有程序。

于 2013-10-05T18:04:33.840 回答
0

对于 Windows Vista 和更高版本,可以使用称为应用程序重新启动和恢复的功能。除其他事项外,应用程序可以注册由 WER(Windows 错误报告)在此类事件上调用的处理程序过程。该方法可以做某些事情。例如,您可以编写堆栈跟踪,这在应用程序停止响应 (AppHang) 时通常很有用。

请注意,该函数必须表现得很好,即遵循一定的规则做什么,什么时候做,什么不做,否则 WER 将杀死这个恢复线程。我强烈建议查看 MSDN。

顺便说一句,您的描述缺少确切的崩溃消息,您应该添加该信息。所谓的“崩溃”有多种可能的原因。如果没有这些信息并给出上面的代码,这有点猜测。

于 2013-10-05T23:22:21.563 回答