有一些 youtube 视频告诉你去设置数据执行保护来解决。这是一条红鲱鱼。它也可能有害,特别是如果您运行旧的 dos 应用程序(因为出于某种原因您必须这样做)。
如果程序抛出任何类型的未处理异常,您将收到此错误消息。
如果您使用此代码段启动它...
Dim psi As New ProcessStartInfo(pathToTarget)
Dim p As Process = Process.Start(psi)
Dim bIfinished As Boolean = p.WaitForExit(itimeout)
If bIfinished = False Then
p.Kill()
End If
iretVal = p.ExitCode
pathToTarget是目标 exe/bat (TARGET) 文件的完整路径
timeout是一个表示毫秒的整数。2 分钟将是 2*60*1000
如果程序自行结束,则bfinished为真。注意 - 这不是返回码。如果它未能在(本例中为 2 分钟)内完成,则 bFinished 将为假。
可以检查p.ExitCode以查看 TARGET 返回的内容。通常,0 表示成功,其他任何内容都是错误代码。
这是OP提到的消息框,(autoAging恰好是我用来演示的exe)。它还显示“XYZ 已停止工作”。谷歌需要知道这一点!

请注意,代码将继续在您的应用程序中运行,因此您可以根据需要进行清理。单击或不单击“关闭程序”对我所知的 HOST 没有影响。
如果您拥有 TARGET 的代码,请确保您处理所有错误并返回适当的代码。这样您的呼叫应用程序 (HOST) 就可以知道如何做出反应。你也避免了这个消息框。
如果您不拥有 TARGET 的代码,您只需尽力而为。如果有一些输出您可以轻松检查,请执行此操作。否则我会假设失败并继续这个假设。
此消息框确实会消耗资源。虽然这不是一个大问题,但它们中的足够多会使你的盒子内存不足。