3

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

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

有时我确实面对Win32Exception消息Access is deniedNativeErrorCode设置为 5。MSDN 说这种组合发生在Kill()进程终止时被调用时。其他两个案例没有详细记录。

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

我如何识别和处理这种特定情况?

4

2 回答 2

1

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

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

这是一个如何在 C# 中运行命令行的示例 Run Command Prompt Commands

问候

于 2013-08-15T11:19:38.003 回答
0

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

或者,使用 PInvoke 调用TerminateProcess.

于 2013-08-15T13:42:49.763 回答