Выводим список процессов Windows

Выводим список процессов Windows Примеры скриптов и макросов для Word и WSH

В данной статье я хочу рассмотреть способы как получить список процессов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   {//Соединяемся с WMIPsWMI=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"' Производим соединение с WMIset PsWMI=GetObject("winmgmts:"' Проверка на ошибкуIf Err.Number <> 0 Then                Mess ="Ошибка" &vbCrLf & "Код ошибки: " & err.Number                 WshShell.Popup Mess,0,"Зaпущенныe процеccы",vbCriticalElse ' Производи 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 & vbCrLfNEXT 'Выводим список прoцесcов их идентификаторовWScript.Echo PsListEndif'*************Конец***************************************

Скачать архив с примерами

Список процессов 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.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий