当Process.Kill()产生“拒绝访问”因为进程正在终止时,如何处理这些情况?

时间:2013-08-15 07:51:18

标签: c# .net process access-denied win32exception

在我的代码中,当发生以下任一情况时,我需要调用Process.Kill() declared in MSDN投掷Win32Exception

  1. 无法终止关联的流程。
  2. 这个过程正在终止。
  3. 关联的进程是Win16可执行文件。
  4. 有时我确实面对Win32Exception消息Access is denied并且NativeErrorCode设置为5. MSDN表示当进程终止时调用Kill()时会发生此组合。其他两个案例没有记录在这些细节中。

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

    如何识别和处理此特定情况?

2 个答案:

答案 0 :(得分: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

问候

答案 1 :(得分:0)

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

或者,使用PInvoke来调用TerminateProcess