sobre process y c#

07/04/2004 - 00:19 por Pablo | Informe spam
hola.

estuve viendo que con

Process[] processes = Process.GetProcessesByName("EXCEL", "192.168.0.19");

obtengo una lista de los procesos que se estan corriendo en dicho equipo.

Alguien vio algo relacionado a "matar" aplicaciones de otro equipo o
cosas similares para ejecutar sobre aplicaciones remotas?


desde ya muchas gracias.
 

Leer las respuestas

#1 sergi
09/04/2004 - 20:43 | Informe spam
Hola,

Puedes arrancar y detener procesos en equipos remotos usando WMI (Windows
Media Instrumentation). Tienes que tener en cuenta que el proceso arrancado
de manera remota no se ejecutará en modo interactivo; esto es, su interfaz
de usuario no será accesible (pero si podrás comprobar que se está
ejecutando mirando en el taskmanager). También tienes que tener en cuenta
que debes tener permisos de administrador en la máquina remota para realizar
una operación de esta naturaleza.

Las clases de C# que dan acceso a la infraestructura WMI son las que están
en el namespace System.Management.

Te he hecho un pequeño ejemplo de cómo iniciar y parar un proceso en un
equipo remoto, espero que te sirva.

<codigo>
ConnectionOptions connOptions = new ConnectionOptions();
connOptions.Username = "administrador";
connOptions.Password = "administrador";
connOptions.EnablePrivileges = true;
ManagementScope scope = new ManagementScope(@"\\Machine_nameoot\cimv2",
connOptions);
scope.Connect();
ManagementClass mClass = new ManagementClass("Win32_Process");
ManagementBaseObject parameters = mClass.GetMethodParameters("Create");
parameters["CommandLine"] = "notepad.exe";
ManagementBaseObject oParams = mClass.InvokeMethod("Create", parameters,
null);
UInt32 processId = (UInt32)oParams["ProcessID"];
parameters.Dispose();
parameters = null;
oParams.Dispose();
oParams = null;
Thread.Sleep(3000);
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Process WHERE
ProcessID="+processId);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,
query);
foreach (ManagementObject process in searcher.Get())
{
parameters = process.GetMethodParameters("Terminate");
parameters["Reason"] = 0;
oParams = process.InvokeMethod("Terminate", parameters, null);
}
if (oParams != null)
{
Debug.WriteLine(oParams["ReturnValue"]);
}
</codigo>


Sergio Borrás


"Pablo" escribió en el mensaje
news:
hola.

estuve viendo que con

Process[] processes = Process.GetProcessesByName("EXCEL", "192.168.0.19");

obtengo una lista de los procesos que se estan corriendo en dicho equipo.

Alguien vio algo relacionado a "matar" aplicaciones de otro equipo o
cosas similares para ejecutar sobre aplicaciones remotas?


desde ya muchas gracias.

Preguntas similares