solo - ¿Cómo puedo matar un proceso, utilizando VBScript, iniciado por un usuario en particular?
taskkill error no se encontro el proceso (2)
Tengo varios usuarios ejecutando Attachemate en un servidor de Windows 2003. Quiero matar a attachemate.exe iniciado por user_1 sin matar attachemate.exe iniciado por user_2.
Quiero usar VBScript.
Shell a pskill desde http://sysinternals.com/
Línea de comando: pskill -u user_1 attachemate.exe
Puede usar esto para averiguar quién es el propietario del proceso, y una vez que lo tenga, puede usar Win32_Process para eliminar el proceso mediante el ID del proceso.
Detalles de clase de MSDN Win32_Process
MSDN Terminar un proceso con Win32_Process
Seguramente hay una forma más limpia de hacerlo, pero esto es lo que se me ocurrió. NOTA: Esto no se ocupa de múltiples procesos del mismo nombre, por supuesto, pero creo que puede trabajar esa parte con una matriz para contenerlos o algo así. :)
strComputer = "."
strOwner = "A111111"
strProcess = "''notepad.exe''"
'' Connect to WMI service and Win32_Process filtering by name''
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!//" _
& strComputer & "/root/cimv2")
Set colProcessbyName = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " _
& strProcess)
'' Get the process ID for the process started by the user in question''
For Each objProcess in colProcessbyName
colProperties = objProcess.GetOwner(strUsername,strUserDomain)
if strUsername = strOwner then
strProcessID = objProcess.ProcessId
end if
next
'' We have the process ID for the app in question for the user, now we kill it''
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" & strProcessID)
For Each objProcess in colProcess
objProcess.Terminate()
Next