Matar procesos remotos con C# y la línea de comandos de Windows

Que tal compañeros, en este artículo del blog partiremos en gran medida del anterior post en el cual obteníamos los procesos en ejecución de un equipo remoto, una vez hecho esto podemos proceder a matar algunos de los procesos antes obtenidos y para lograr esto nos auxiliaremos de la línea de comandos de Windows y mas especificamente de la herramienta taskkill. Dicha herramienta nos permite matar procesos remotos de manera fácil y definiendo solo los parámetros de Nombre del Equipo Remoto, Usuario del Equipo Remoto, Contraseña del Usuario del Equipo Remoto y el Nombre del Proceso Remoto a Eliminar.

En nuestra aplicación C# lo primero que debemos hacer es implementar las siguientes librerías:

using System.IO;
using System.Diagnostics;

Una vez hecho esto debemos proceder a escribir el código que matará al proceso remoto, para lograr esto primero debemos crear un archivo con extension .bat, que sera el encargado de ejecutar el comando taskkill con los parámetros especificados anteriormente en la línea de comandos de Windows.

public void MatarProcesoRemoto(string NombrePC, string Usuario, string Pass, string ProcesoRemoto, string FileName)
        {
            //Creamos el Archivo con extensión .bat
            StreamWriter sw = new StreamWriter(FileName + ".bat");
            //Escribimos el comando TASKKILL que se ejecutará para eliminar al proceso remoto en ejecución
            sw.WriteLine("taskkill /s " + NombrePC + " /U " + Usuario + " /P " + Pass + " /IM " + ProcesoRemoto);
            sw.Close();

            //Instanciamos la clase ProccessStartInfo para ejecutar el archivo .bat en la línea de comandos de Windows
            ProcessStartInfo startInfo = new ProcessStartInfo(Application.StartupPath + "\\" + FileName + ".bat");
            startInfo.WindowStyle = ProcessWindowStyle.Normal;
            Process process = new Process();
            process.StartInfo = startInfo;
            //Ejecutamos el Archivo .bat para eliminar el proceso remoto
            process.Start();
            process.WaitForExit();
            process.Close();
        }

Con esto debemos lograr matar los procesos que especifiquemos en el equipo que elijamos, solo queda recordar que para la correcta ejecución e implementación de este fragmento de código es necesario configurar nuestro firewall y especificar un usuario remoto con privilegios de administrador de preferencia.

6 comentarios en “Matar procesos remotos con C# y la línea de comandos de Windows

  1. muy bien, muy util

  2. Miguel Alanis Hernandez

    esta muy chido su blog, un me gusta, de FACEBOOK

  3. Rogelio Antonio Ramos

    Hola, estoy intentando aplicar el código que publicaron, pero me manda un mensaje de que el usuario o el pass son incorrectos, cómo le hago para saber como debo de colocar el nombre de usuario, ya que según yo lo estoy haciendo bien, Gracias

    roger3antonio@gmail.com

    • Hola Rogelio disculpa la tardanza, el usuario y contraseña debes colocarlos tal cual están en el equipo remoto, es decir, respetando mayúsculas, minúsculas, números, etc. Dado que estas intentando acceder y matar los procesos de un equipo remoto es necesario que el usuario que ingresas sea una usuario Administrador y de preferencia que sea el que creaste al instalar el sistema operativo.

      Cualquier cosa estamos para ayudarte. Saludos.

  4. Se pudiera aplicar esto; pero para hacerlo con los procesos que me esten ocupando mas memoria

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s