Введение
Вам когда-нибудь хотелось узнать, какая программа открыла тот или иной файл или каталог? Теперь у вас есть такая возможность. Программа Process Explorer отображает информацию об открытых процессом дескрипторах и загруженных им библиотеках DLL.
Рабочая область программы Process Explorer состоит из двух окон. В верхнем окне отображается список активных процессов, включая имена учетных записей, которым принадлежат эти процессы. Информация, которая отображается в нижнем окне, зависит от выбранного режима работы программы. В режиме дескрипторов в нижнем окне отображаются все открытые дескрипторы выбранного в верхнем окне процесса, а в режиме библиотек DLL - все загруженные процессом динамические библиотеки и отображенные в память файлы. Помимо этого в программе Process Explorer также есть мощные возможности поиска, благодаря которым можно быстро узнать, у какого процесса открыт определенный дескриптор или загружена определенная библиотека DLL.
Благодаря своим уникальным возможностям, программа Process Explorer полезна для разрешения проблем с версиями библиотек DLL и утечками дескрипторов, а также для понимания принципов работы ОС Windows и приложений.
Установка
Запустите программу Process Explorer (procexp.exe).
В файле справки приводится информация о доступных операциях и об использовании программы. При возникновении вопросов или проблем посетите форум компании Sysinternals, посвященный программе Process Explorer.
Дополнительные материалы
Ниже приведен перечень других программ для отслеживания дескрипторов и библиотек DLL, доступных на веб-узле Sysinternals:
программа для просмотра информации об открытых дескрипторах, выполняется в командной строке;
программа для просмотра информации о загруженных библиотеках DLL, выполняется в командной строке;
программа для вывода списка процессов на локальной или удаленной системе, выполняется в командной строке;
программа для завершения работы процессов на локальной или удаленной системе, выполняется в командной строке.
Статьи в базе знаний Майкрософт, посвященные
программе Process Explorer
В приведенных ниже статьях базы знаний Майкрософт упоминается об использовании программы Process Explorer для диагностики или устранения различных ошибок:- 319034: FIX: Утечка дескрипторов потока в методе PrintReport отчетов Data Report
- 242131: Как отобразить список процессов, имеющих открытые файлы
- 216368: PRB: Нарушение доступа во время установки приложения, если файл занят
- 166112: PRB: Возникновение конфликта со свойством EOF при использовании директивы #import для объектов данных ActiveX
- 301357: PRB: Библиотеки DLL не выгружаются после вызова CoFreeUnusedLibraries
- 247957: SAMPLE: Использование программы DUPS.exe для разрешения проблем совместимости библиотек DLL
- 313735: XCON: Утечка памяти в процессе MTA при большом количестве открытых дескрипторов
- 276525: Компьютер перестает отвечать при отслеживании открытых дескрипторов
Установка
Просто запустите программу Process Explorer (procexp.exe).
В файле справки приводится информация об использовании программы Process Explorer и о доступных операциях. При возникновении вопросов или проблем посетите
Системные утилиты, текстовые и редакторы, браузеры и RSS-агрегаторы, шифровальщики и почтовые клиенты, все эти, и много других типов программ имеют одну общую функцию, не зависящую от назначения приложения, а именно вывод на печать. Для программ, так или иначе имеющих дело с контентом, который можно отобразить на аналоговом носителе, функция вывода на печать считается едва ли не обязательной.
Но есть и исключения. Взять, к примеру, стандартный . Несмотря на то, что выводимая им информация о процессах вполне может быть распечатана, привычной команды “Распечатать” вы в нем не найдете. Но как быть, если вам вдруг понадобилось распечатать список текущих процессов? Не переписывать же их один за другим в текстовый файл!
В действительности вывести список процессов, служб и прочей системной информации в файл (на печать) очень просто. Самый простой способ – воспользоваться специальным программным обеспечением, например, хорошо известной каждому системному администратору утилитой Procexp или комплексным приложением AnVir Task Manager.
Но можно обойтись и без всякого стороннего программного обеспечения. Все что нам нужно, так это знание двух-трех команд выполняемых в командной строке или ее усовершенствованном аналоге PowerShell.
В консоли для вывода списка текущих процессов в файл используется команда tasklist
с указанием пути. При выполнении команды файл создается автоматически. Существующий же файл будет перезаписан. Выглядит все следующим образом.
tasklist > D:processes.txt
При этом вы получите список текущих процессов с указанием имени сессии и процесса, его идентификатор, а также объем используемой каждым процессом выделенной памяти. Если у вас возникли проблемы с кодировкой (в текстовом файле крякозябры), измените кодировку, выполнив команду chcp со значением 1251.
chcp 1251
tasklist > D:processes.txt
Команда tasklist имеет множество параметров и фильтров позволяющих сортировать выводимые данные. Для получения подробной справки в командной строке следует использовать команду tasklist /?
Другой метод получения списка запущенных процессов в файл заключается в использовании утилиты PowerShell. Принцип примерно тот же, но команды используются другие. Кстати, команды в PowerShell именуются командлетами. Набор командлетов вывода списка процессов в файл будет выглядеть следующим образом:
get-process | out-file D:process.txt
В данном примере get-process получает список процессов, а out-file выводит его по указанному пути. Как вы можете видеть, выводимые данные с использованием PowerShell отличаются куда большей информативностью. Если вместо out-file использовать команду out-printer, можно вывести данные непосредственно на принтер.
С помощью PowerShell также можно выполнять множество других полезных операций. Этот универсальный инструмент, безусловно, будет полезен не только программистам и системным администраторам, для которых знание синтаксиса PowerShell является обязательным, но и опытным пользователям желающим сделать свою работу на компьютере более быстрой и продуктивной.
Процессы в Windows - где посмотреть, описание стандартных
В продолжение рубрики «Для начинающих», сегодня речь пойдет о процессах в Windows. Разберем что это такое, на что они влияют и с помощью чего их можно контролировать. В операционной системе «процессом» является экземпляр компьютерной программы, которая запущенна в данный момент. Сама по себе программа является всего лишь набором правил и кода, тогда как процесс является фактическим выполнением всего этого.
Задачи одной и той же программы могут выполняться в нескольких процессах и, естественно, каждому активному процессу требуется определенное количество системных ресурсов, и чем больше их одновременно запущенно, тем медленнее начинает работать компьютер.
Многих начинающих пользователей мало интересует, какие скрытые процессы у них работают, а между тем, есть смысл поинтересоваться, не работают ли какие-нибудь фоновые программы и сервисы, в которых нет необходимости и которые при этом впустую расходуют процессорное время и память. Но прежде чем отключать ненужные процессы, чтобы освободить ресурсы компьютера, необходимо научиться разбираться в них, чтобы случайно не затронуть, например, процессы относящиеся к системным, многие из которых запускаются во время старта компьютера и критически необходимы для функционирования операционной системы и других приложений.
Следует также упомянуть, что большинство вирусов для осложнения обнаружения маскируют себя под какой-либо из процессов. Именно по этим причинам важно уметь их опознавать и идентифицировать.
Для того чтобы увидеть весь список активных процессов необходимо открыть «Диспетчер задач» (Task Manager). Сделать это можно тремя распространенными способами:
Комбинация клавиш ctrl + alt + del
- комбинация клавиш ctrl +shift + esc
или
- правый клик мыши на панели задач — пункт «Диспетчер задач».
Находясь в окне диспетчера, выберите вкладку «Процессы».
В открывшемся окне находится несколько столбцов с помощью которых мы и сможем получить первую необходимую информацию о том, какие процессы загружены и сколько ресурсов они потребляют.
1. Имя образа — название процесса
2. Пользователь — от какой учетной записи запущен процесс
3. ЦП — показывает загрузку процессора в процентном соотношении
4. Память — выделенный объем оперативной памяти
5. Описание — краткое описание того какая программа, служба или сервис инициирует данный процесс.
В самом низу окна показывается суммарное количество активных процессов, общая загрузка процессора и оперативной памяти в процентах.
Чтобы отключить ненужный процесс, необходимо выбрать один из них и нажать кнопку «Завершить процесс». Однако простое «Завершение процесса» просто отключит его до следующей перезагрузки Windows. Поэтому, если вы хотите навсегда избавиться от него, необходимо отключить его запуск в самом приложении, которое запускает этот процесс, или отключить активирующую его службу, или убрать из автозагрузки, а может и вовсе удалить ненужное приложение.
Если для получения информации о процессе вам будет недостаточно стандартных столбцов, можно добавить дополнительные. Для этого в главном меню Диспетчера задач нажмите «Вид» и в открывшемся меню выберите пункт «Выбрать/Добавить столбцы».
Выставьте галочки напротив пунктов «ИД процесса (PID)» и «Путь к образу». Нажмите «Ок».
Теперь в столбце ««Путь к образу» вы можете видеть расположение файла, который инициирует запущенный процесс.
А информация столбца «ИД процесса (PID)» будет полезна, если вам понадобится узнать, например, какая служба запускает процесс «Svchost.exe».
Заглянув немного вперед, почему мы выбрали именно его в качестве примера. Это важный системный процесс и нужен для включения и управления различных служб. Путаница у многих пользователей с этим процессом возникает от того что одновременно могут быть запущены несколько его экземпляров, но все от разных служб. И для того чтобы понять, какая именно служба относится к отдельно взятому процессу «Svchost.exe», нам и понадобится его числовой идентификатор — PID. Запомнив число, указанное в этом столбце переходим в «Диспетчере Задач» на вкладку «Службы».
Находясь в этом окне, нажмите левой кнопкой мыщи по заголовку столбца «ИД процесса». Список отсортируется и вы без труда сможете найти процесс по PID, посмотрев его описание в соответствующем столбце.
Сведений в этом окне конечно очень мало, однако позволяет примерно понять, какая именно служба запустила «Svchost.exe». Мы уже упоминали этот процесс в статье « »
Еще одна возможность увидеть, где располагается файл инициирующий запуск процесса, это нажать правой кнопкой мыши на одном из них и выбрать пункт «Открыть место хранения файла».
Со временем вы научитесь легко опознавать любые процессы. Для того, чтобы немного облегчить вам эту задачу, ниже приводим список наиболее типичных программных и системных процессов, большинство из которых по умолчанию запускаются вместе с операционной системой.
alg.exe — системный процесс. служба, являющаяся одним из компонентов ОС Windows необходимая для доступа к Интеренету и работы Брандмауэра. Если завершить этот процесс то подключение к интернет оборвется до следующей перезагрузки Windows.
ati2evxx.exe — является одним из компонентов драйверов для видеокарт AMD/ATI. Осуществляет работу горячих клавиш. Из-за большой нагрузки на ЦП рекомендуется отключить этот процесс и соответствующую службу.
BTTray.exe — компонент драйвера Bluetooth от Widcomm. Необходим для их работы.
csrss.exe — системный процесс Windows, обеспечивающий работу компонента «клиент/сервер». Не может быть отключен. Наиболее сильно подвержен заражению вирусов.
ctfmon.exe — системный процесс, отвечающий за языковую панель, индикатор, отображающий текущую раскладку клавиатуры и обеспечивающий поддержку других альтернативных методов ввода. Отключение этого процесса есстевстенно не рекомендуется.
dwm.exe — системный процесс Windows. Интегрирован в систему, начиная с Windows Vista и 7. Отвечает за графические эфекты рабочего стола, окон и меню, а также нормальное функционирование интерфейса «Aero».
explorer.exe — критический необходимый системный процесс проводника Windows, отвечающий за отображение рабочего стола и меню, возможность осуществления навигации пользователя. Не стоит его отключать.
issch.exe - процесс, позволяющий выполнять проверку обновлений в фоновом режиме стандартного инсталлятора Windows и других программ.
jusched.exe - процесс планировщика для автоматической проверки обновлений Java компонентов. Отключить автоматический запуск этого процесса можно путем выключения автоматической проверки обновлений в настройках Java (Пуск-Панель управления-Java).
lsass.exe - необходимый системный процесс, отвечающий за работу локального сервера проверки подлинности, политику безопасности и авторизации пользователей. Взаимодействует с службой winlogon. Не может быть завершен.
lsm.exe - системный процесс, управляющий удаленными подключениями к локальной системе. Не нужно отключать.
rthdcpl.exe - Процесс, обеспечивающий работу контрольной панели Realtek HD Audio. Иконка для этой программы находится в трее, рядом с часами. Завершение этого процесса может вызвать проблемы работы звука на системе.
rundll32.exe — Необходимй системный процесс Windows запускаемый утилитой командной строки. Позволяет запускать функции и команды DLL — файлов.
services.exe — важный системный процесс, отвечающий за за управление всеми системными службами.
smss.exe — необходимый системный процесс, отвечающий за запуск пользовательского сеанса, а также запуск процессов Winlogon и Csrss.exe. Завершать работу этого процесса нельзя.
spoolsv.exe — системный процесс. Отвечает за функции печати (принтер, факс и тд.).
svchost.exe — один из главных системных процессов, отвечающий за работу целого ряда сервисов и служб. Одновременно может работать несколько его копий, т.к. каждая содержит различные службы.
wininit.exe — необходимый системный процесс WIndows. ВЫполняет в фоновом режиме поддержку работы некоторых наиболее важных системных служб и программ, а также отвечает за своевременный запуск элементов автозагрузки.
winlogon.exe — Критически важный системный процесс. Отвечает за вход и выход пользователей в систему. Не может быть завершен.
wmiprvse.exe — системный процесс, один из компонентов Инструментария управления Windows. Отключение не рекомендуется.
wudfhost.exe - Представляет собой определенный функционал поддержки различных драйверов в ОС Windows. Появляется, к примеру во время подключения телефона по USB.
Управление процессами из командной строки
Способов управлять процессами в Windows предостаточно, и командная строка занимает в них далеко не первое место. Однако иногда бывают ситуации, когда все остальные инструменты кроме командной строки недоступны, например некоторые вредоносные программы могут блокировать запуск Task Manager и подобных ему программ. Да и просто для общего развития полезно знать способы управления компьютером из командной строки.
Для управления процессами в командной строке есть две утилиты — tasklist и taskkill . Первая показывает список процессов на локальном или удаленном компьютере, вторая позволяет их завершить. Попробуем …
Если просто набрать команду tasklist в командной строке, то она выдаст список процессов на локальном компьютере.
По умолчанию информация выводится в виде таблицы, однако ключ /fo позволяет задать вывод в виде списка или в формате CSV, а ключ /v показывает более подробную информацию о процессах, например команда tasklist /v /fo list выведет подробное описание всех процессов в виде списка.
Список получится довольно большой, поэтому попробуем уточнить запрос. Для этого используем ключ /fi , который позволяет использовать фильтры для вывода данных, например команда tasklist /fi ″username eq user″ /fi ″memusage le 40000″ выводит список процессов пользователя user , которые потребляют не больше 40Мб памяти.
Найдя процессы, которые необходимо завершить, воспользуемся командой taskkill. Завершать процессы можно по имени, идентификатору процесса (PID) или задав условия с помощью фильтров. Для примера запустим несколько экземпляров блокнота (notepad.exe) и попробуем завершить его разными способами.
Ключ /f завершает процесс принудительно, а /t завершает все дочерние процессы.
Полную справку по командам tasklist и taskkill можно получить, введя их с ключом /?
Теперь пустим в ход тяжелую артиллерию — PowerShell. Его можно запустить не выходя из командной строки. Для получения списка процессов используем командлет Get-Process.
Чтобы не выводить весь список процессов можем воспользоваться командлетом Where-Object , который задает фильтр для выводимой информации. Для примера выведем список процессов, которые загружают процессор и отсортируем их по возрастанию нагрузки с помощью команды:
Get-Process | where {$_.cpu -gt 0} | sort cpu
С помощью PowerShell мы можем получить любую информацию о любом процессе. В качестве примера возьмем процесс cmd и выведем список его свойств командой:
Get-Process -Name cmd | Get-Member -Membertype property
Выбираем те свойства, что нам интересны (в примере имя и ID процесса, путь к файлу, используемые модули и время запуска) и выводим их в виде списка командой:
Get-Process -Name cmd | Format-List name, id, path, modules, starttime
Таким образом мы можем посмотреть когда и кем был запущен процесс, сколько он потребляет ресурсов, где находится исполняемый файл и еще много различной информации.
Для завершения процесса в PowerShell есть командлет Stop-Process . Он завершает указанный процесс по его имени или идентификатору. Однако мы поступим по другому и передадим результат выполнения командлета Get-Process по конвейеру:
Get-Process | where {$_.name -match ″notepad″} | Stop-Process
Get-Process не может показать процессы на удаленном компьютере, для этого воспользуемся командлетом Get-WmiObject , например посмотрим процессы на удаленном компьютере PC командой:
Get-WmiObject win32_process -computername PC | ft name, processid, description
Для боле полного ознакомления с PowerShell можно воспользоваться встроенной справкой, для вызова справки нужно набрать Get-Help ″имя командлета″
Ну и для полноты обзора рассмотрим еще одно средство для управления процессами из командной строки. Это утилиты Pslist и Pskill входящие в состав пакета PSTools от компании Sysinternals.
Эти утилиты не требуют специальной установки, достаточно просто скопировать их на диск. Для запуска нужно зайти в папку с утилитами и ввести в командной строке необходимую команду.
Завершение процесса программой pskill предельно просто, вводим команду и имя (или ID) процесса и все.
Справку по утилитам Pslist и Pskill можно посмотреть, введя команду с ключом /?
И еще, все манипуляции с процессами необходимо выполнять с правами администратора, для этого командную строку требуется запускать с повышением привилегий.