В данной статье я хочу рассмотреть способы как получить список процессовWindows. С одной стороны, операционная система предоставляет в распоряжение пользователя стандартный диспетчер задач, который, в принципе, и позволяет выводить список запущенных процессов Windows и приложений, но, порой приходится использовать и другие методы для получения информации о процессах операционной системы, это часто бывает, если стандартный диспетчер был заблокирован вирусом. И так, приступим. Я рассмотрю следующие методы.
— Использование средств WMI посредством написания сценариев Windows Script Host
— Встроенная утилита командной строки tasklist
Список процессов Windows с помощью средств WMI
Давайте рассмотрим два варианта вывода списка процессов системы Windows, один с помощью js-скрипта, а второй с помощью vbs-скрипта. Открываем программу Notepad++ и создаем сценарий под названием PSList.js. Для работы с Windows Management Instrumentation (WMI) нам надо будет в качестве параметра функции GetObject() указать «winMgmts:». Для обработки исключительных ситуаций будем брать стандартную конструкцию try … catch языка jscript. Я приведу код сценария целиком, с предварительным пояснением используемых в нем лексем:
vbCritical – константа, которая задает вид значка диалогового окна
Popup – метод объекта WshShell
Enumerator – объект, используемый для перебора всех элементов коллекции, в нашем случае коллекция будет хранить данные о работающих процессах
Что бы получить информацию, мы используем класс Process схемы Win32. Выполняя SQL-запрос вида SELECT * FROM Win32_Process мы, собственно получим нужную нам коллекцию, сам запрос выполняется с помощью метода ExecQuery().
While – с помощью данного цикла мы будем просматривать все элементы,
Вот собственно, сам код сценария:
//******************************************* //PsList.JS //Вывод списка процессов Windows //******************************************* // Объявляем переменные var PsWMI, PsProcesses1, PsProcess1, PsList1, Mess1; var vbCritical=16; //Создаем экземпляр объекта WshShell var WshShell = WScript.CreateObject("WScript.Shell"); //Включаем обработку исключительных ситуаций try { //Соединяемся с WMI PsWMI=GetObject("winMgmts:"); } //Начинаем обработку возможных ошибок catch(e){ if(e!=0){ Mess ="ОшибкаnКод ошибки: "+ err.Number; WshShell.Popup(Mess,0,"Запущенные прoцеccы",vbCritical); WScript.Quit(); } } //Создаем кoллeкцию всех работающих процеccoв PsProcesses1=new Enumerator(PsWMI.ExecQuery("SELECT * FROM Win32_Process")); PsList1="Зaпущенныe прoцеccыnn"; //Цикл для перебора коллекции while (!PsProcesses1.atEnd()){ PsProcess1=PsProcesses1.item(); PsList1+=PsProcess1.Name+" "+ PsProcess1.ProcessID+"\n"; PsProcesses1.moveNext(); } //Выводим кoллeкцию процеccов и их идентификаторов WScript.Echo(PsList1); //************* Конец ******************** |
Теперь приступим к написанию vbs сценария для вывода списка Windows процессов:
'********************************************** ' PsList.VBS'Вывод списка процессов Windows '********************************************** ' Включаем обработку исключительных ситуаций OnErrorResumeNext ' Объявляем переменные Dim PsWMI, PsProcesses, PsProcess, PsList, Mess ' Создаем экземпляр объекта WshShell set WshShell = WScript.CreateObject("WScript.Shell") ' Производим соединение с WMI set PsWMI=GetObject("winmgmts:") ' Проверка на ошибку If Err.Number <> 0 Then Mess ="Ошибка" &vbCrLf & "Код ошибки: " & err.Number WshShell.Popup Mess,0,"Зaпущенныe процеccы",vbCritical Else ' Производи SQL запрос для получения кoллeкции set PsProcesses=PsWMI.ExecQuery("SELECT * FROM Win32_Process") PsList="Зaпущeнные проoцeссы" & vbCrLf & vbCrLf ' Производи перебор ForEach PsProcess in PsProcesses PsList=PsList & PsProcess.Name & vbTab & PsProcess.ProcessID & vbCrLf NEXT 'Выводим список прoцесcов их идентификаторов WScript.Echo PsList Endif '*************Конец*************************************** |
Список процессов Windows с помощью CMD
В отличии от сервера Windows Script Host, где надо подключать WMI, командная строка имеет в своем составе стандартную утилиту tasklist для просмотра Windows списка процессов. Давайте рассмотрим основной синтаксис данной утилиты:
tasklist[.exe][/s компьютер][/u доменпользователь [/p пароль]][/fo {TABLE|LIST|CSV}][/nh][/fi фильтр [/fi фильтр2[ ... ]]][/m [модуль]|/svc |/v] |
Основной способ отображения управляется с помощью ключей, смотрим:
/s – позволяет задать имя или IP-адрес удаленного компьютера (обратную косую черту использовать не надо), по дефолту используется имя локальной, текущей машины.
/u – позволяет выполнить команду с правами учетной записи пользователя, который указывается как пользователь или домен/пользователь. По дефолту будут браться права текущего пользователя, который вошел в систему и запустил утилиту.
/p – задает пароль для учетной записи юзера, которая задана ключом /u.
/fo – тут задается формат вывода данных, допустимые значения — TABLE, LIST и CSV, по умолчанию используется значение TABLE.
/nh — Запрещает вывод заголовков столбцов. Этот параметр будет актуальным, если ключ /fo имеет значение TABLE или CSV.
/fi – Это фильтр, который дает возможность отфильтровать список выводимых процессов Windows по заданному критерию, например: TASKLIST /FI «USERNAME ne NT AUTHORITYSYSTEM» /FI «STATUS eq running».
/m – Отображает все задачи, которые загрузили DLL модули, что отвечают заданному критерию. Если модуль не указан, то выводятся все модули, закруженные каждой задачей, например, /M wbem*. Данный ключ недопустимо прописывать одновременно с ключами /svc и /v.
/svc — Отображает без обрезки сведения о всех службах для каждого прoцессa. Данный аргумент является допустимым, если /fo имеет значение TABLE. Нельзя брать совместно с /m и /v
/v – Отображать подробную информацию. Несовместим с /svc и /m.
Задает отображение подробных сведений о задании в выходных данных. Нельзя брать совместно с /svc и /m.
В добавок, хотелось бы еще упомянуть утилиту PsList из набора PsUtils и программу Process Explorer для Windows, которые также позволяют выводить список процессов Windows.
Довольно долго искал именно эту информацию, вот нашел, спасибо, познавательно, а главное доступно. Отличный сайт, думаю много чего еще найду для себя.