当 Process.Kill() 由于进程正在终止而产生“访问被拒绝”的情况时,我如何处理

本文关键字:情况 访问被拒绝 拒绝 处理 何处理 访问 于进程 Kill Process 进程 终止 | 更新日期: 2023-09-27 18:27:56

在我的代码中,我需要调用在 MSDN 中声明的Process.Kill(),以便在发生以下任一情况时抛出Win32Exception

  1. 无法终止关联的进程。
  2. 进程正在终止。
  3. 关联的进程是 Win16 可执行文件。

有时我确实会面临Win32Exception Access is denied消息,NativeErrorCode设置为 5。MSDN 表示,当进程终止时调用Kill()时,会发生这种组合。另外两个案例没有详细记录。

所以我需要合理地处理这种情况。当然,我可以抓住Win32Exception但我怎么知道它到底为什么被扔掉?如果进程已经终止,我不需要执行任何操作,并且可能在所有其他情况下重新抛出异常。

如何识别和处理此特定案例?

当 Process.Kill() 由于进程正在终止而产生“访问被拒绝”的情况时,我如何处理

使用命令行 C# 终止任务,例如 Taskkill/F/IM ExeName.exe。如果你没有毅力杀死任务,那么强制杀死也无济于事。

更多信息请查看 http://www.c-sharpcorner.com/UploadFile/8ea152/kill-process-from-the-command-prompt-in-windows-8/

下面是如何在 C# 中运行命令行的示例运行命令提示符命令

问候

使用 try-catch。如果你问我,这是 .NET 框架中的一个设计错误。

或者,使用 PInvoke 调用TerminateProcess