Trabajo fuera de un servidor Windows multiusuario, y el error rdpclip nos muerde todos los días. Usualmente solo abrimos el administrador de tareas y lo matamos, luego reiniciamos rdpclip, pero eso es un problema en el trasero. Escribí un script de powershell para matar y luego reiniciar rdpclip, pero nadie lo usa porque es un script (sin mencionar que la política de ejecución está restringida para el cuadro). Intento escribir una aplicación de Windows rápida y sucia donde haga clic en un botón para matar rdpclip y reiniciarlo. Pero quiero restringirlo al usuario actual y no puedo encontrar un método para la clase Process que hace esto. Hasta el momento, esto es lo que tengo:¿Cómo se mata un proceso para un usuario particular en .NET (C#)?
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist)
{
if (theprocess.ProcessName == "rdpclip")
{
theprocess.Kill();
Process.Start("rdpclip");
}
}
No estoy seguro, pero creo que va a matar a todos los procesos Rdpclip. Me gustaría seleccionar por el usuario, al igual que mi script PowerShell:
taskkill /fi "username eq $env:username" /im rdpclip.exe
& rdpclip.ex
supongo que sólo podía invocar el script de PowerShell de mi ejecutable, pero que parece bastante kludgy.
Disculpas de antemano por cualquier problema de formato, esta es mi primera vez aquí.
ACTUALIZACIÓN: También necesito saber cómo obtener el usuario actual y seleccionar solo esos procesos. La solución de WMI que se propone a continuación no me ayuda a obtener eso.
ACTUALIZACIÓN2: Bien, he descubierto cómo obtener el usuario actual, pero no coincide con el usuario del proceso a través de Escritorio remoto. ¿Alguien sabe cómo obtener un nombre de usuario en lugar del SID?
Saludos, fr0man
Tuve que reemplazar WindowsIdentity.GetCurrent(). Nombre con WindowsIdentity.GetCurrent(). User.Value para que esto funcione. –
+1 gracias ... eso era lo que estaba buscando –