The System.Diagnostics.Process class exposes two methods that let you kill a process: CloseMainWindow should be used with processes that have a graphical interface, whereas the Kill method should be used for apps without a user interface (or those whose main window is disable and can’t process the WM_CLOSE message).
It’s quite easy to use these methods (and a few others) to create a command-line utility that kills a process whose ID or name has been passed as an argument. Here’s the complete source code, you should just create a console application project and compile it to a properly named executable, such as KILLPROC:
Imports System.DiagnosticsModule Module1 Sub Main(ByVal args() As String) ' check that we have only one argument If args.Length <> 1 Then Console.WriteLine("SYNTAX: KillProc pid | procname") End End If Dim arg As String = args(0) Dim proc As Process Try ' attempt to use the argument as a PID proc = Process.GetProcessById(CInt(arg)) Catch ex As Exception ' ignore exceptions End Try If proc Is Nothing Then ' attempt to use the argument as a process name Dim procs() As Process = Process.GetProcessesByName(arg) If procs.Length = 1 Then ' we've found the process proc = procs(0) ElseIf procs.Length > 1 Then Console.WriteLine _ ("Process name is ambiguous. Unable to proceed.") End ElseIf procs.Length = 0 Then Console.WriteLine("Process not found. Unable to proceed") End End If End If ' kill the process Dim res As Boolean ' attempt to kill the process by closing its main window res = proc.CloseMainWindow() If res = False Then ' no UI or the window is disabled proc.Kill() End If ' wait for the process to end If proc.WaitForExit(1000) Then Console.WriteLine("Process {0} has been killed", proc.ProcessName) Else Console.WriteLine("Unable to kill process {0}", proc.ProcessName) End If End SubEnd Module