¿Cómo puedo eliminar un proceso, usando VBScript, iniciado por un usuario en particular?

StackOverflow https://stackoverflow.com/questions/76275

Pregunta

Tengo varios usuarios ejecutando adjuntomate en un servidor Windows 2003.Quiero eliminar el archivo adjuntomate.exe iniciado por el usuario_1 sin eliminar el archivo adjuntoemate.exe iniciado por el usuario_2.

Quiero usar VBScript.

¿Fue útil?

Solución

Puede usar esto para averiguar quién es el propietario del proceso y, una vez que lo tenga, puede usar Win32_Process para finalizar el proceso mediante el ID del proceso.

Detalles de la clase MSDN Win32_Process

MSDN Terminar un proceso con Win32_Process

Seguramente hay una forma más limpia de hacer esto, pero esto es lo que se me ocurrió.NOTA:Por supuesto, esto no trata con múltiples procesos con el mismo nombre, pero supongo que puedes resolver 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

Otros consejos

Desembolsar a pskill desde http://sysinternals.com/

Línea de comando:pskill -u usuario_1 adjuntomate.exe

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top