Si, si es posible detenerlo. Tienes que lanzar primero el comando taskill y darle como argumento el nombre del ejecutable.
Yo lo haría de la siguiente forma:
System.Diagnostics.Process.Start("taskkill", "/IM " + proceso.exe);
En cuanto a ver si el proceso se está ejecutando para no lanzarlo como siempre hay dos formas, la chapucera o poco elegante que sería sabiendo el nombre del proceso ejecutar la instrucción anterior, si está ejecutandose parar el proceso y si no, no hace nada.
Luego tenemos la forma elegante o por lo menos me parece menos burra :D
foreach (System.Diagnostics.Process proc in System.Diagnostics.Process.GetProcesses())
{
if (proc.ProcessName == nombre_proceso)
System.Diagnostics.Process.Start("taskkill", "/IM " + proceso.exe);
}
Eso si en el primer ejempo le paso el nombre del archivo con extensión ya que supongo que lo he lanzado yo.
Sin embargo en el segundo bloque cuando inicio la busqueda le indico solamente el nombre del proceso y luego una vez lo encuentra el nombre del ejecutable para que pueda cerrarlo.
No se si te lo he dejado claro o te he liado un poco pero bueno cualquier cosilla dímela que intentaré aclararla.
Saludetes