c# - tareas - Matar proceso en máquina remota
mata procesos de manera remota en windows (1)
La clase System.Diagnostics.Process
no puede matar un proceso remoto. Puede usar el espacio de nombres System.Management
(asegúrese de establecer una referencia) para usar WMI.
Un simple ejemplo es a continuación.
var processName = "iexplore.exe";
var connectoptions = new ConnectionOptions();
connectoptions.Username = @"YourDomainName/UserName";
connectoptions.Password = "User Password";
string ipAddress = "192.168.206.53";
ManagementScope scope = new ManagementScope(@"//" + ipAddress + @"/root/cimv2", connectoptions);
// WMI query
var query = new SelectQuery("select * from Win32_process where name = ''" + processName + "''");
using (var searcher = new ManagementObjectSearcher(scope, query))
{
foreach (ManagementObject process in searcher.Get()) // this is the fixed line
{
process.InvokeMethod("Terminate", null);
}
}
Console.ReadLine();
Estoy intentando matar un proceso en una máquina remota. Pero obtengo el error. ¿Qué estoy haciendo mal y cómo puedo hacer que esto funcione?
Mi código:
var iu = new ImpersonateUser();
try
{
iu.Impersonate(Domain, _userName, _pass);
foreach (var process in Process.GetProcessesByName("notepad", "RemoteMachine"))
{
string processPath = pathToExe; //Is set as constant (and is correct)
process.Kill();
Thread.Sleep(3000);
Process.Start(processPath);
}
}
catch (Exception ex)
{
lblStatus.Text = ex.ToString();
}
finally
{
iu.Undo();
}
Solo para aclarar ImpersonateUser, me hace iniciar sesión en la máquina remota con los derechos de usuario correctos. Entonces el problema no está allí. Cuando depuro y verifico el objeto de proceso, encuentro la ID de proceso correcta para el bloc de notas en este caso. Entonces la conexión funciona bien Pero cuando trato de matar el proceso me sale este error:
System.NotSupportedException: Feature is not supported for remote machines. at System.Diagnostics.Process.EnsureState