C# 如何在windows上忽略子进程的阻止系统错误
我有一个C#应用程序在Visual Studio 2015中运行。它接受任意可执行文件,并打开一个命令提示符,试图通过该提示符运行这些文件。但是这些可执行文件没有任何保证,因此它们可能无法运行,引发系统错误,比如“找不到xxx.dll”。有关特定示例,请参见。这些系统错误(窗口的标题有时会显示“XXXXX.exe-系统错误”)会阻止子进程结束,并且由于父进程正在等待子进程,因此也会阻止父进程。它会阻塞,直到有人出现并按下按钮,让子进程死亡,父进程继续。我需要在没有人为干预的情况下自动发生,最好是让这些错误一开始就不出现。通过在线查看,我可以通过使用regedit禁用Windows错误报告。虽然这会忽略错误,如“XXXXX.exe已停止工作”,但不会忽略系统错误,如我链接的错误。如何忽略此类错误?您链接的错误消息显示DLL导入失败,其中函数是按id而不是名称加载的(当您的程序是与预期不同的DLL版本时,通常会发生这种情况)。我不知道如何阻止这条消息出现在第一位 但是,由于子可执行文件仍在运行(显示此对话框),您可以找到此窗口并从代码中将其关闭 这很容易,因为父进程必须知道子进程id。从那里,您可以使用或检索对话句柄(通过指定适当的窗口类名),然后使用关闭对话句柄 注意:您必须使用p/Invoke来使用这些函数 也许不是最优雅的解决方案,但肯定有效C# 如何在windows上忽略子进程的阻止系统错误,c#,windows,child-process,ignore,system-error,C#,Windows,Child Process,Ignore,System Error,我有一个C#应用程序在Visual Studio 2015中运行。它接受任意可执行文件,并打开一个命令提示符,试图通过该提示符运行这些文件。但是这些可执行文件没有任何保证,因此它们可能无法运行,引发系统错误,比如“找不到xxx.dll”。有关特定示例,请参见。这些系统错误(窗口的标题有时会显示“XXXXX.exe-系统错误”)会阻止子进程结束,并且由于父进程正在等待子进程,因此也会阻止父进程。它会阻塞,直到有人出现并按下按钮,让子进程死亡,父进程继续。我需要在没有人为干预的情况下自动发生,最好是