How do I kill a process using Vb.NET or C#?


I have a scenario where I have to check whether user has already opened Microsoft Word. If he has, then I have to kill the winword.exe process and continue to execute my code.

Does any one have any straight-forward code for killing a process using or c#?

9/25/2008 6:36:46 PM

Accepted Answer

You'll want to use the System.Diagnostics.Process.Kill method. You can obtain the process you want using System.Diagnostics.Proccess.GetProcessesByName.

Examples have already been posted here, but I found that the non-.exe version worked better, so something like:

foreach ( Process p in System.Diagnostics.Process.GetProcessesByName("winword") )
        p.WaitForExit(); // possibly with a timeout
    catch ( Win32Exception winException )
        // process was terminating or can't be terminated - deal with it
    catch ( InvalidOperationException invalidException )
        // process has already exited - might be able to let this one go

You probably don't have to deal with NotSupportedException, which suggests that the process is remote.

9/22/2008 5:12:46 PM

Killing the Word process outright is possible (see some of the other replies), but outright rude and dangerous: what if the user has important unsaved changes in an open document? Not to mention the stale temporary files this will leave behind...

This is probably as far as you can go in this regard (VB.NET):

    Dim proc = Process.GetProcessesByName("winword")
    For i As Integer = 0 To proc.Count - 1
    Next i

This will close all open Word windows in an orderly fashion (prompting the user to save his/her work if applicable). Of course, the user can always click 'Cancel' in this scenario, so you should be able to handle this case as well (preferably by putting up a "please close all Word instances, otherwise we can't continue" dialog...)

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow