Как я могу уничтожить процесс, используя VBScript, запущенный конкретным пользователем

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

Вопрос

У меня есть несколько пользователей, запускающих attachemate на сервере Windows 2003.Я хочу убить attachemate.exe запущен пользователем 1 без убийства attachemate.exe запущен пользователем 2.

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

Это было полезно?

Решение

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

Сведения о классе MSDN Win32_Process

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

Другие советы

Раскошелиться на pskill из http://sysinternals.com/

Командная строка:pskill -u пользователь_1 attachemate.exe

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top