Как я могу убить процесс, используя VBScript, запущенный конкретным пользователем - PullRequest
5 голосов
/ 16 сентября 2008

У меня есть несколько пользователей, которые запускают приложение Attachemate на сервере Windows 2003. Я хочу убить attachemate.exe, запущенный user_1, без уничтожения attachemate.exe, запущенного user_2.

Я хочу использовать VBScript.

Ответы [ 2 ]

5 голосов
/ 18 сентября 2008

Вы можете использовать это, чтобы узнать, кто является владельцем процесса, а затем, когда у вас есть это, вы можете использовать Win32_Process, чтобы убить процесс по ID процесса.

MSDN Win32_Process class details

MSDN Завершение процесса с Win32_Process

Конечно, есть более чистый способ сделать это, но вот что я придумал. ПРИМЕЧАНИЕ. Конечно, это не относится к нескольким процессам с одним и тем же именем, но я думаю, что вы можете обработать эту часть с массивом для хранения их или чего-то в этом роде. :)

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
2 голосов
/ 17 сентября 2008

Оболочка в Пскилл от http://sysinternals.com/

Командная строка: pskill -u user_1 attachemate.exe

...