Как найти процесс по имени файла

From Microsoft’s blog: How do I find out which process has a file open?

Enter the Restart Manager.

The official goal of the Restart Manager is to help make it possible to shut down and restart applications which are using a file you want to update. In order to do that, it needs to keep track of which processes are holding references to which files. And it’s that database that is of use here. (Why is the kernel keeping track of which processes have a file open? Because it’s the converse of the principle of not keeping track of information you don’t need: Now it needs the information!)

Here’s a simple program which takes a file name on the command line and shows which processes have the file open.

#include <windows.h>
#include <RestartManager.h>
#include <stdio.h>

int __cdecl wmain(int argc, WCHAR **argv)
{
 DWORD dwSession;
 WCHAR szSessionKey[CCH_RM_SESSION_KEY+1] = { 0 };
 DWORD dwError = RmStartSession(&dwSession, 0, szSessionKey);
 wprintf(L"RmStartSession returned %dn", dwError);
 if (dwError == ERROR_SUCCESS) {
   PCWSTR pszFile = argv[1];
   dwError = RmRegisterResources(dwSession, 1, &pszFile,
                                 0, NULL, 0, NULL);
   wprintf(L"RmRegisterResources(%ls) returned %dn",
           pszFile, dwError);
  if (dwError == ERROR_SUCCESS) {
   DWORD dwReason;
   UINT i;
   UINT nProcInfoNeeded;
   UINT nProcInfo = 10;
   RM_PROCESS_INFO rgpi[10];
   dwError = RmGetList(dwSession, &nProcInfoNeeded,
                       &nProcInfo, rgpi, &dwReason);
   wprintf(L"RmGetList returned %dn", dwError);
   if (dwError == ERROR_SUCCESS) {
    wprintf(L"RmGetList returned %d infos (%d needed)n",
            nProcInfo, nProcInfoNeeded);
    for (i = 0; i < nProcInfo; i++) {
     wprintf(L"%d.ApplicationType = %dn", i,
                              rgpi[i].ApplicationType);
     wprintf(L"%d.strAppName = %lsn", i,
                              rgpi[i].strAppName);
     wprintf(L"%d.Process.dwProcessId = %dn", i,
                              rgpi[i].Process.dwProcessId);
     HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION,
                                   FALSE, rgpi[i].Process.dwProcessId);
     if (hProcess) {
      FILETIME ftCreate, ftExit, ftKernel, ftUser;
      if (GetProcessTimes(hProcess, &ftCreate, &ftExit,
                          &ftKernel, &ftUser) &&
          CompareFileTime(&rgpi[i].Process.ProcessStartTime,
                          &ftCreate) == 0) {
       WCHAR sz[MAX_PATH];
       DWORD cch = MAX_PATH;
       if (QueryFullProcessImageNameW(hProcess, 0, sz, &cch) &&
           cch <= MAX_PATH) {
        wprintf(L"  = %lsn", sz);
       }
      }
      CloseHandle(hProcess);
     }
    }
   }
  }
  RmEndSession(dwSession);
 }
 return 0;
}

Время на прочтение
5 мин

Количество просмотров 6.6K

Периодически при разработке приложений в ОС РВ QNX 6.5.0 возникает задача найти процесс зная только его символьное имя, или выяснить какую либо информацию о процессе, или собрать какую либо статистику о процессе. Это может понадобиться для широкого круга задач.

image

Данная задача является платформо-специфичной и единое кроссплатформенное решение доступно только в виде сторонних библиотек.

В данной статье мы реализуем небольшой класс «обертку», позволяющий получить информацию о процессе, зная только его имя. Использовать мы будем ЯП C++.

Для выполнения поставленной задачи можно воспользоваться системным вызовом «system», вызывая утилиту для работы с процессами «pidin», обрабатывая вывод данной утилиты. Но, данное решение нас мало интересует.

Итак, начнем с того, что в QNX первичной организационной структурой(в отличие от например Linux) является поток. Ядро занимается исключительно планировкой потоков. Процессы же являются контейнерами, содержащими в себе один или несколько потоков. Вся работа с процессами вынесена в менеджер процессов procnto.

Данный менеджер ресурсов создает виртуальную директорию /proc/. Попробуем вывести содержимое данной директории.

# ls /proc/
total 41
dr-xr-xr-x  2 root      root              1 Sep 04 22:37 1
dr-xr-xr-x  2 root      root              1 Sep 04 22:37 110611
dr-xr-xr-x  2 root      root              1 Sep 04 22:37 126996
dr-xr-xr-x  2 root      root              1 Sep 04 22:37 2
dr-xr-xr-x  2 root      root              1 Sep 04 22:37 20489
drwxr-xr-x  2 root      root             50 Jul 09  2010 boot
nrw-------  1 root      root              0 Sep 04 18:15 dumper
dr-xr-xr-x  4 root      root              1 Sep 04 22:37 self

Я немного сократил вывод утилиты, для экономии места. Можно заметить что в выводе присутствуют:

1) директории с PID запущенных процессов
2) Виртуальная директория «boot», хранящая в себе файлы «вкомпилированные» в образ ОС.
3) Файл dumper, используемый утилитой «core dump»
4) Директория «self» — аналогичная директориям с PID, но предоставляет данные для текущего процесса(в нашем случае ls).

В директориях с PID, содержится единственный файл с именем «as», который невозможно ни читать ни писать штатными утилитами QNX работающими с файлами. Но, зато к данным файлам(а на самом деле к менеджеру procnto) можно обратиться используя системный вызов devctl. Полная информация о работу с менеджером procnto представлена тут.

Этим мы и постараемся воспользоваться в разрабатываемом классе. Как можно заметить — имя получается отдельным, от остальной информации devctl. Поэтому, определим в классе два приватных поля — поле хранящее имя процесса и системную информацию(системная информация о процессе хранится в структуре типа «debug_process_t»).

Итак, для начала определим публичный интерфейс нашего класса. Пусть у нас информация о конкретном процессе хранится в отдельном классе QNXProcInfo. Так как данный класс соответствует одному конкретному процессу, то вполне логично, что бы его конструктор принимал в себя pid процесса(в отличие от имени — pid уникален для каждого запущенного в системе процесса). Для начала пусть он научится отдавать нам имя процесса которому он соответствует и распечатывать в текстовом виде в поток информацию о себе.

Тогда заголовок нашего класса будет выглядеть примерно так:

 class QNXProcInfo
{
    public:
        QNXProcInfo(int pid);
        std::string GetName();
        void PrintInfo(std::ostream &out = std::cout);
        debug_process_t GetInfo();
    private:
        std::string* name;
        debug_process_t info;
};

Для поиска процесса определим другой класс QNXProcMgr. От него требуется поиск процессов по имени и по переданной функции компаратору.

Заголовок данного класса будет выглядеть примерно так:

 class QNXProcMgr
{
    public:
        static QNXProcInfo* Find(std::string pname);
        static QNXProcInfo* Find(bool (*comparator)(debug_process_t info));
};

Приступим к реализации.

Для получения информации о имени процесса, используем пользовательскую структуру name, Которая содержит в себе структуру procfs_debuginfo и свободный буфер, в который будет записано имя процесса.

Код будет выглядеть приблизительно так:

QNXProcInfo::QNXProcInfo(int pid)
{
    char      paths[PATH_MAX];
    int       fd;

    static struct
    {
        procfs_debuginfo    info;
        char                buff [PATH_MAX];
    } name;

    sprintf(paths, "/proc/%d/as", pid);

    if ((fd = open (paths, O_RDONLY)) == -1)
    {
    //FIXME: Add error handler here
    }

    devctl(fd, DCMD_PROC_MAPDEBUG_BASE, &name, sizeof(name), 0);
    this->name = new string(name.info.path);
   
    devctl(fd, DCMD_PROC_INFO, &info, sizeof(info), 0);
    close (fd);
}

Как можно заметить, для получения имени мы используем devctl команду DCMD_PROC_MAPDEBUG_BASE, при получении которой procnto заполняет передаваемую ему структуру и записывает имя в буфер path.

Для получения прочей информации — используется devctl команда DCMD_PROC_INFO, при получении которой procnto заполняет структуру info, которую мы передаем ему в качестве параметра.

Функции получения имени и вывода информации о процессе выглядят совсем тривиально и описываться не будут. Стоит только лишь отметить, что с информацией о полях структуры debug_process_t можно ознакомиться тут.

Перейдем к рассмотрению функциональности класса, отвечающего за поиск процесса.

Вот код, отвечающий за поиск процесса по имени:

 QNXProcInfo* QNXProcMgr::Find(string pname)
{
    struct dirent   *dirent;
    DIR             *dir;
    int             pid;
    string    name;
    QNXProcInfo *info;
 
    if (!(dir = opendir ("/proc")))  
        throw QNXProcException("couldn't open /proc");
     
    while ((dirent = readdir(dir)))
    {
        if (isdigit(*dirent->d_name))
        {
            pid = atoi(dirent->d_name);
            info = new QNXProcInfo(pid);
        name = info->GetName();
        if (name == pname)
                return info;
        else delete info;
        }
    }
  closedir (dir);
  throw QNXProcException("Process not found");
}

Как можно заметить, используется простой перебор файлов в директории /proc, для каждого из найденных файлов(если он представляет собой PID), создается новый объект ProcInfo, который проверяется на соответствие условию, и в случае не соответствия удаляется.

Похоже выглядит функция для поиска по функции компаратору:

QNXProcInfo* QNXProcMgr::Find(bool (*comparator)(debug_process_t info))
{
    struct dirent   *dirent;
    DIR             *dir;
    int             pid;
    QNXProcInfo *info;
  
    if (!(dir = opendir ("/proc")))   
        throw QNXProcException("couldn't open /proc");
      
    while ((dirent = readdir(dir)))
    {
        if (isdigit(*dirent->d_name))
        {
            pid = atoi(dirent->d_name);
            info = new QNXProcInfo(pid);
            if (comparator(info->GetInfo()))
            return info;
            else delete info;
        }
    }
  closedir (dir);
  throw QNXProcException("Process not found");
}

Вот собственно и все. В случае необходимости читатель может расширить и дополнить указанные классы в соответствии со своими потребностями.

Так же, следует отметить, что код не претендует на полноту. В нем отсутствует обработка некоторых видов ошибок, не оптимально выстроен алгоритм поиска, функция поиска должна уметь отдавать несколько объектов QNXProcInfo(так как одному имени может соответствовать несколько процессов) и многое многое другое. Но, я уверен, что читатель вполне справится с этим сам. Данная статья преследовала цель лишь показать направление деятельности.

Полные исходники доступны по ссылке.

Каждая программа, запущенная на сервере, способна создавать один или несколько процессов. На одном сервере может быть несколько пользователей, которые выполняют множество команд, создающих процессы. Эти процессы могут работать как на переднем плане, так и в фоновом режиме. Если программа запущена на переднем плане, она может занять терминал, где программа была первоначально запущена, и другие приложения не могут быть запущены, пока другие процессы не запущены на переднем плане.

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

Иногда во время работы наша система становится невосприимчивой, процесс может занимать много системного пространства и даже остановиться. Поэтому нам нужно найти и завершить такой процесс в Linux, чтобы продолжить работу. Существует много способов завершить (убить) процесс в Linux, которые будут рассмотрены в этом руководстве. Процесс может быть убит принудительно с помощью этих команд.

При написании этой статьи я использовал Ubuntu. Однако команды могут работать в любом дистрибутиве Linux.

Содержание

  1. Определение местоположения процесса Linux
  2. Завершение процесса по идентификатору
  3. Как проверить, был ли процесс завершен или нет?
  4. Завершение процесса по имени
  5. Заключение

Определение местоположения процесса Linux

Шаг 1: Прежде всего, откройте Terminal, нажав на пусковую установку Ubuntu и выполнив поиск Terminal.

Открытие терминала

Шаг 2: Теперь нажмите на Терминал и подождите, пока он откроется.

Шаг 3: Как только терминал откроется, у вас появится вот такой экран:

Командная строка терминала

В последующих шагах важны следующие два ключа:

PID — это идентификатор процесса. Каждый процесс имеет определенный 5-значный номер, присвоенный самому процессу. Эти номера могут повторяться, когда они достигают максимального предела, но они всегда уникальны для процесса в системе.

Шаг 4: команда top- используется в качестве основной команды для просмотра всех запущенных процессов, использующих ресурсы компьютерного устройства. Итак, мы выполняем команду top- в терминале и получаем следующие результаты

Использование команды Linux top для поиска процесса

Команда top сама по себе является приложением. Оно может использоваться для отображения списка всех процессов и имеет новое оформление при выполнении. Вот пример,

  • h — используется для отображения окна справки. В окне справки есть все команды, они предоставляют информацию, которая весьма полезна.
  • пробел — При нажатии пробела мы получим немедленное обновление таблицы процессов. Нам не придется ждать никакого временного интервала.
  • f — добавление файлов для отображения в макете или удаление для удаления определенных полей, чтобы они не отображались.
  • q — используется для выхода из верхнего приложения, а также для дополнительно открытого окна.
  • l — используется для переключения отображения информации о средней нагрузке и времени работы.
  • m — служит для переключения отображения информации о памяти.
  • P (Shift + p) — используется для сортировки процессов по использованию процессора.s — используется для изменения задержки между обновлениями.

Шаг 5: Для просмотра списка всех запущенных процессов есть еще одна команда

Команда ps в Linux

Появится список всех запущенных в данный момент процессов. Этот процесс показывает все запущенные процессы, которые имеют свои PID «идентификаторы процессов». Вы можете просмотреть этот список, чтобы найти имя процесса, которое также соответствует программе, которую вы хотите убить. В конце списка отображаются программы, запущенные в последнее время, которые вы хотите завершить из списка.

Когда вы закончите, нажмите «q», чтобы выйти из этого окна.

Завершение процесса по идентификатору

Получив PID, мы можем использовать команду kill, чтобы завершить процесс на основе информации, полученной от команды ps -A.

Шаг 1: Для этого мы используем команду «sudo kill PID». Где PID — это идентификатор процесса, который мы хотим завершить.

Если мы хотим завершить определенный процесс, мы видим его соответствующий PID, а затем используем его, чтобы завершить запущенный процесс. Например, мы хотим завершить процесс «firefox», поэтому сначала находим его PID.

Список процессов

Итак, здесь PID firefox равен 16562. Мы используем команду «sudo kill PID», чтобы завершить процесс Firefox.

Как проверить, был ли процесс завершен или нет?

Затем мы проверяем все запущенные процессы после того, как убьем интересующий нас процесс, используя команду «ps -A | less». Результат показывает, что в списке нет процесса firefox (PID: 16562).

Проверьте, был ли процесс убит

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

Убийство программы по имени ее процесса работает только для всех исполняемых файлов (т.е. всех запускаемых программ), которые должны быть открыты на момент выполнения. Все те программы, которые выполняются в фоновом режиме, не могут быть убиты по имени процесса.

Сейчас мы убьем интересующий нас процесс, используя его имя. Если мы хотим завершить конкретный процесс, мы видим его соответствующий PID и затем используем его для убийства запущенного процесса. Например, мы хотим завершить процесс «firefox», поэтому сначала находим его PID. Завершить процесс Linux по имени

Итак, здесь имя процесса — firefox, и мы используем команду «pkill firefox» для завершения этого процесса.

Затем мы проверим все запущенные процессы после того, как убьем интересующий нас процесс, используя команду «ps -A | less». Результат показывает, что в списке нет процесса firefox.

Заключение

Спасибо, что прочитали эту статью. Мы рассмотрели, как можно найти и затем завершить процесс, используя его ID или имя.

Содержание

  1. Как проверить список запущенных процессов в Windows?
  2. Диспетчер задач
  3. Список запущенных процессов из командной строки
  4. Как узнать список запущенных процессов из Power Shell
  5. Процессы Windows. Как найти и удалить вирусный процесс?
  6. Как найти процесс по имени windows

Как проверить список запущенных процессов в Windows?

В статье описывается несколько способов, которые помогут отобразить список запущенных процессов в Windows. Операции производятся в Windows 10, но что-то сработает и в более ранних версиях.
Согласитесь, задача отобразить список запущенных процессов далеко не самая сложная. Однако подходы к её решению не обязательно должны быть стандартными. Информацию по процессам можно представить и в более комфортном виде, чем, например, через…

Диспетчер задач

Чаще всего, кроме этого способа, пользователям больше ничего и не известно. Но, раз уж это так, значит, этого большинству из нас достаточно. Вызывается оный во всех последних версиях Windows просто – достаточно зажать три клавиши быстрого доступа:

Ctrl + Shift + Esc

Вкладка с процессами не изменилась со времён Windows XP:

Однако, если вы на К76, вам Диспетчера мало. Согласен, продолжаем.

Список запущенных процессов из командной строки

В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:

После этого на Рабочем столе появится текстовый файл:

в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:

Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:

Для удалённого компьютера команда примет вид:

На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…

Как узнать список запущенных процессов из Power Shell

Информация из файла, получаемого аналогичным путём, будет немного более информативнее. Этот вариант доступен владельцам копий Windows 7/10, и командлет на отображение списка на том же Рабочем столе будет таким:

для локальной копии Windows:

  • Handles – число потоков, которые процесс открыл для себя.
  • NPM(K) – размер невыгружаемого пула памяти, использующегося процессом, в килобайтах.
  • PM(K) – размер выгружаемого пула памяти, использующегося процессом, в килобайтах.
  • WS(K) – размер рабочего набора процесса, в килобайтах. Он состоит из страниц памяти, к которым процесс обращался в текущем сеансе.
  • VM(M) – объём оперативной памяти, занимаемой процессом, в мегабайтах (в том числе в pafefile).
  • CPU(s) – время в секундах, затрачиваемое всеми камнями процессора.
  • ID – PID указанного процесса.
  • ProcessName – Имя процесса.

Процессы Windows. Как найти и удалить вирусный процесс?

Что такое процессы windows и как можно ими управлять? Как найти и удалить с компьютера вирусный процес с помощью программы Starter?

Список всех выполняемых на компьютере программ можно просмотреть с помощью Диспетчера задач Windows. Для этого необходимо нажать на клавиатуре сочетание клавиш Ctrl+Alt+Del. Вы увидите список процессов, и сразу возникнет вопрос: зачем нужен каждый конкретный процесс в этом списке? Давайте разберемся, что же такое процессы и как можно ими управлять.

Процессы – это все, что происходит в данный момент времени в системе. В Диспетчере задач на вкладке “Процессы” отображаются все запущенные на данный момент программы. Процессы могут быть “порождены” либо пользователем, либо системой. Системные процессы запускаются при загрузке Windows; пользовательские процессы – это программы, запущенные самим пользователем компьютера либо запущенные от его имени. Все системные процессы запускаются от имени LOCAL SERVICE, NETWORK SERVICE или SYSTEM (данная информация доступна в Диспетчере задач в столбце “Имя пользователя”).

Диспетчер задач позволяет только просматривать список процессов и завершать их работу. Для этого выделите имя процесса в списке и нажмите кнопку “Завершить процесс”.Это означает завершение работы программы, которой принадлежит процесс. Однако в Диспетчере задач невозможно просмотреть информацию о том или ином процессе.

Для управления процессами Windows я бы рекомендовал использовать более мощную утилиту, которая называется Starter. Это отличная бесплатная программа, которая к тому же не требует установки. Скачиваем ее здесь, затем запускаем из папки файл Starter.exe и выбираем сверху вкладку “Процессы”.

Starter показывает все процессы в реальном времени, предоставляя исчерпывающую информацию по каждому из них. Щелкнув правой клавишей мыши по интересующему нас процессу и выбрав пункт “Свойства файла”, мы можем узнать производителя программного модуля, версию, атрибуты и другие сведения. Контекстное меню процесса также позволяет перейти в папку с программой, завершить процесс либо найти информацию о нем в интернете.

Как избавиться от вирусов на компьютере с помощью Starter?

Очень часто вирусы и другие вредоносные программы маскируются под различные процессы. Поэтому, если вы заметили что с вашим компьютером что-то не так – запустите проверку антивирусом. Если это не помогло или ваш антивирус вообще отказался запускаться, откройте Диспетчер задач и просмотрите все запущенные процессы.

Если при нажатии Ctrl+Alt+Del у вас появляется ошибка: “Диспетчер задач отключен администратором”, читайте вот эту мою заметку.

Особое внимание уделите процессу, если тот запущен от имени пользователя и потребляет слишком много ресурсов (столбцы “ЦП” и “Память”). Если вы нашли в списке явно подозрительный процесс – завершите его и посмотрите, как после этого будет работать ваша система. Если же вы сомневаетесь или не знаете, какой программе принадлежит запущенный процесс – лучше зайдите в Google или Яндекс, введите в поисковой строке название процесса и найдите информацию о нем.

Встроенный в Windows Диспетчер задач конечно позволяет отключать процессы, но, к сожалению, дает очень мало информации по ним, а потому довольно сложно понять является ли процесс вирусным. Программа Starter в этом плане намного полезнее.

Итак, чтобы найти и удалить с компьютера вирусный процесс, делаем следующее:

1. Запускаем программу Starter и переходим во вкладку “Процессы”.
2. Находим процесс, который вызывает у нас подозрения. Щелкаем по нему правой клавишей мыши и выбираем пункт “Свойства файла”. Я для примера выбрал файл svchost.exe. В открывшемся окне смотрим компанию-производителя данного приложения:

На этом все. Сегодня мы узнали, что такое процессы Windows и с помощью каких утилит ими можно управлять. Кроме того, теперь мы умеем избавляться от вирусов, маскирующихся под различные процессы.

Как найти процесс по имени windows

В продолжение рубрики «Основы», сегодня речь пойдет о процессах в Windows. Разберем что это такое, на что они влияют и с помощью чего их можно контролировать.

p, blockquote 1,0,0,0,0 —>

В операционной системе «процессом» является экземпляр компьютерной программы, которая запущенна в данный момент. Сама по себе программа является всего лишь набором правил и кода, тогда как процесс является фактическим выполнением всего этого. Задачи одной и той же программы могут выполняться в нескольких процессах и, естественно, каждому активному процессу требуется определенное количество системных ресурсов, и чем больше их одновременно запущенно, тем медленнее начинает работать компьютер.

p, blockquote 2,0,0,0,0 —>

Многих начинающих пользователей мало интересует, какие скрытые процессы у них работают, а между тем, есть смысл поинтересоваться, не работают ли какие-нибудь фоновые программы и сервисы, в которых нет необходимости и которые при этом впустую расходуют процессорное время и память. Но прежде чем отключать ненужные процессы, чтобы освободить ресурсы компьютера, необходимо научиться разбираться в них, чтобы случайно не затронуть, например, процессы относящиеся к системным, многие из которых запускаются во время старта компьютера и критически необходимы для функционирования операционной системы и других приложений.

p, blockquote 3,0,0,0,0 —>

Следует также упомянуть, что большинство вирусов для осложнения обнаружения маскируют себя под какой-либо из процессов. Именно по этим причинам важно уметь их опознавать и идентифицировать.

p, blockquote 4,0,0,0,0 —>

Для того чтобы увидеть весь список активных процессов необходимо открыть «Диспетчер задач» (Task Manager). Сделать это можно тремя распространенными способами:

p, blockquote 5,0,0,0,0 —>

— комбинация клавиш ctrl + alt + del
— комбинация клавиш ctrl +shift + esc
или
— правый клик мыши на панели задач — пункт «Диспетчер задач».

p, blockquote 6,0,0,0,0 —>

Находясь в окне диспетчера, выберите вкладку «Процессы».

p, blockquote 7,0,0,0,0 —>

p, blockquote 8,0,0,0,0 —>

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

p, blockquote 9,0,0,0,0 —>

1. Имя образа — название процесса
2. Пользователь — от какой учетной записи запущен процесс
3. ЦП — показывает загрузку процессора в процентном соотношении
4. Память — выделенный объем оперативной памяти
5. Описание — краткое описание того какая программа, служба или сервис инициирует данный процесс.

p, blockquote 10,0,0,0,0 —>

В самом низу окна показывается суммарное количество активных процессов, общая загрузка процессора и оперативной памяти в процентах.

p, blockquote 11,0,1,0,0 —>

Чтобы отключить ненужный процесс, необходимо выбрать один из них и нажать кнопку «Завершить процесс». Однако простое «Завершение процесса» просто отключит его до следующей перезагрузки Windows. Поэтому, если вы хотите навсегда избавиться от него, необходимо отключить его запуск в самом приложении, которое запускает этот процесс, или отключить активирующую его службу, или убрать из автозагрузки, а может и вовсе удалить ненужное приложение.

p, blockquote 12,0,0,0,0 —>

Если для получения информации о процессе вам будет недостаточно стандартных столбцов, можно добавить дополнительные. Для этого в главном меню Диспетчера задач нажмите «Вид» и в открывшемся меню выберите пункт «Выбрать/Добавить столбцы».

p, blockquote 13,0,0,0,0 —>

p, blockquote 14,0,0,0,0 —>

Выставьте галочки напротив пунктов «ИД процесса (PID)» и «Путь к образу». Нажмите «Ок».

p, blockquote 15,0,0,0,0 —>

p, blockquote 16,0,0,0,0 —>

p, blockquote 17,0,0,0,0 —>

Теперь в столбце ««Путь к образу» вы можете видеть расположение файла, который инициирует запущенный процесс.

p, blockquote 18,0,0,0,0 —>

А информация столбца «ИД процесса (PID)» будет полезна, если вам понадобится узнать, например, какая служба запускает процесс «Svchost.exe».

p, blockquote 19,0,0,0,0 —>

Заглянув немного вперед, почему мы выбрали именно его в качестве примера. Это важный системный процесс и нужен для включения и управления различных служб. Путаница у многих пользователей с этим процессом возникает от того что одновременно могут быть запущены несколько его экземпляров, но все от разных служб. И для того чтобы понять, какая именно служба относится к отдельно взятому процессу «Svchost.exe», нам и понадобится его числовой идентификатор — PID. Запомнив число, указанное в этом столбце переходим в «Диспетчере Задач» на вкладку «Службы».
Находясь в этом окне, нажмите левой кнопкой мыщи по заголовку столбца «ИД процесса». Список отсортируется и вы без труда сможете найти процесс по PID, посмотрев его описание в соответствующем столбце.

p, blockquote 20,0,0,0,0 —>

p, blockquote 21,0,0,0,0 —>

Сведений в этом окне конечно очень мало, однако позволяет примерно понять, какая именно служба запустила «Svchost.exe». Мы уже упоминали этот процесс в статье «svchost.exe — вирус или нет?»

p, blockquote 22,0,0,0,0 —>

Еще одна возможность увидеть, где располагается файл инициирующий запуск процесса, это нажать правой кнопкой мыши на одном из них и выбрать пункт «Открыть место хранения файла».

p, blockquote 23,1,0,0,0 —>

p, blockquote 24,0,0,0,0 —>

Со временем вы научитесь легко опознавать любые процессы. Для того, чтобы немного облегчить вам эту задачу, ниже приводим список наиболее типичных программных и системных процессов, большинство из которых по умолчанию запускаются вместе с операционной системой.

p, blockquote 25,0,0,0,0 —>

alg.exe — системный процесс. служба, являющаяся одним из компонентов ОС Windows необходимая для доступа к Интеренету и работы Брандмауэра. Если завершить этот процесс то подключение к интернет оборвется до следующей перезагрузки Windows.

p, blockquote 26,0,0,0,0 —>

ati2evxx.exe — является одним из компонентов драйверов для видеокарт AMD/ATI. Осуществляет работу горячих клавиш. Из-за большой нагрузки на ЦП рекомендуется отключить этот процесс и соответствующую службу.

p, blockquote 27,0,0,0,0 —>

BTTray.exe — компонент драйвера Bluetooth от Widcomm. Необходим для их работы.

p, blockquote 28,0,0,0,0 —>

csrss.exe — системный процесс Windows, обеспечивающий работу компонента «клиент/сервер». Не может быть отключен. Наиболее сильно подвержен заражению вирусов.

p, blockquote 29,0,0,0,0 —>

ctfmon.exe — системный процесс, отвечающий за языковую панель, индикатор, отображающий текущую раскладку клавиатуры и обеспечивающий поддержку других альтернативных методов ввода. Отключение этого процесса есстевстенно не рекомендуется.

p, blockquote 30,0,0,0,0 —>

dwm.exe — системный процесс Windows. Интегрирован в систему, начиная с Windows Vista и 7. Отвечает за графические эфекты рабочего стола, окон и меню, а также нормальное функционирование интерфейса «Aero».

p, blockquote 31,0,0,0,0 —>

explorer.exe — критический необходимый системный процесс проводника Windows, отвечающий за отображение рабочего стола и меню, возможность осуществления навигации пользователя. Не стоит его отключать.

p, blockquote 32,0,0,0,0 —>

issch.exe – процесс, позволяющий выполнять проверку обновлений в фоновом режиме стандартного инсталлятора Windows и других программ.

p, blockquote 33,0,0,0,0 —>

jusched.exe – процесс планировщика для автоматической проверки обновлений Java компонентов . Отключить автоматический запуск этого процесса можно путем выключения автоматической проверки обновлений в настройках Java (Пуск-Панель управления-Java).

p, blockquote 34,0,0,1,0 —>

lsass.exe – необходимый системный процесс, отвечающий за работу локального сервера проверки подлинности, политику безопасности и авторизации пользователей. Взаимодействует с службой winlogon. Не может быть завершен.

p, blockquote 35,0,0,0,0 —>

lsm.exe – системный процесс, управляющий удаленными подключениями к локальной системе. Не нужно отключать.

p, blockquote 36,0,0,0,0 —>

rthdcpl.exe – Процесс, обеспечивающий работу контрольной панели Realtek HD Audio. Иконка для этой программы находится в трее, рядом с часами. Завершение этого процесса может вызвать проблемы работы звука на системе.

p, blockquote 37,0,0,0,0 —>

rundll32.exe — Необходимй системный процесс Windows запускаемый утилитой командной строки. Позволяет запускать функции и команды DLL — файлов.

p, blockquote 38,0,0,0,0 —>

services.exe — важный системный процесс, отвечающий за за управление всеми системными службами.

p, blockquote 39,0,0,0,0 —>

smss.exe — необходимый системный процесс, отвечающий за запуск пользовательского сеанса, а также запуск процессов Winlogon и Csrss.exe. Завершать работу этого процесса нельзя.

p, blockquote 40,0,0,0,0 —>

spoolsv.exe — системный процесс. Отвечает за функции печати (принтер, факс и тд.).

p, blockquote 41,0,0,0,0 —>

svchost.exe — один из главных системных процессов, отвечающий за работу целого ряда сервисов и служб. Одновременно может работать несколько его копий, т.к. каждая содержит различные службы.

p, blockquote 42,0,0,0,0 —>

wininit.exe — необходимый системный процесс WIndows. ВЫполняет в фоновом режиме поддержку работы некоторых наиболее важных системных служб и программ, а также отвечает за своевременный запуск элементов автозагрузки.

p, blockquote 43,0,0,0,0 —>

winlogon.exe — Критически важный системный процесс. Отвечает за вход и выход пользователей в систему. Не может быть завершен.

p, blockquote 44,0,0,0,0 —>

wmiprvse.exe — системный процесс, один из компонентов Инструментария управления Windows. Отключение не рекомендуется.

p, blockquote 45,0,0,0,0 —> p, blockquote 46,0,0,0,1 —>

Формулировка задачи:

Мне дано полное имя файла, и по этому файлу я должен найти соответственный процесс(если он запущен).

Код к задаче: «Как найти процесс, зная полное имя файла»

textual

List<Process> GetProcessesByFileName(string filename)
        {
            //Предполагаем, что может быть несколько копий процесса
            List<Process> r = new List<Process>();
            //Ищем процесс в списке процессов
            foreach (Process cur in Process.GetProcesses())
            {
                //если имя файла главного модуля совпало
                if(cur.MainModule.FileName == filename)
                {
                    //заносим в контейнер
                    r.Add(cur);
                }
            }
            return r;
        }

Полезно ли:

6   голосов , оценка 4.167 из 5

Понравилась статья? Поделить с друзьями:
  • Как составить деловое письмо претензию
  • Пропала собака как найти собаку
  • Как найти радиус угла 5 класс
  • Как найти бти квартиры по адресу
  • Как исправить кран чтобы не капал