Узнать имя процесса по pid windows

The process identifier (a.k.a. process ID or PID) is a number used to uniquely identify an active process.

In this short note i will show how to display information about the Windows process (incl. the process name and path to an executable file) by PID from the command-line prompt (CMD) or a Windows PowerShell.

Cool Tip: List processes in Windows from the CMD! Read more →

Execute the tasklist command to get the process name from PID:

C:\> tasklist /FI "pid eq <pid>"

– or –

C:\> tasklist /FI "pid eq <pid>" /V /FO List
Option Description
/FI Displays a set of tasks that match a given criteria specified by the filter
/V Displays verbose task information
/FO Specifies the output format

More information about the process by its PID (including the full path to an executable file) can be retrieved using the wmic command:

C:\> wmic process where "ProcessID=<pid>" get /format:list

Cool Tip: Kill a hanging process in Windows from the CMD! Read more →

Was it useful? Share this post with the world!

You can find Process Name from Process ID (PID) using the command tasklist in command line windows, apart from command prompt, you can even get process name for the associated Process ID (PID) using either Task Manager or Resource Monitor.

You can get Process Name from Process ID (PID) using the command tasklist in command prompt. TaskList command displays all running applications and associated services with their Process ID (PID).

The following command displays the associated Process Name for the Process ID 488.

tasklist /svc /FI "PID eq 488"

Get Process Name from PID using Command Prompt in Windows



Get Process Name by Process ID (PID) from Remote Computer:

Use below command If you want to get Process Name from Process ID (PID) from Remote Computer.

tasklist /s "remote-pc" /svc /FI "PID eq 488"

Find Process Name from PID through Task Manager

1. Open the Task Manger, click the menu View and click Select Columns.

2. Select the column Process Identifier(PID) and click OK.

3. Now you can find Process Name (Image Name) by mapping PID value.

It seems the opposite is a better documented problem (e.g. Get Process ID (PID) from process name (string) – C++ Windows API), so just in case some one out there has a Process ID, and needs to translate it into the actual name, here goes:

std::string ProcIDtoProcName(std::uint32_t pid) {
    
    std::string result = "UNKNOWN";
    
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    if (hProcess != NULL) {
        char buffer[MAX_PATH];
        GetProcessImageFileNameA(hProcess, buffer, MAX_PATH);        
        result = std::string(buffer);
        CloseHandle(hProcess);
        // see note below
        auto friendlyResult = convertWinPath(result); 
        return friendlyResult;
    }    
    
    return result;
}

Note the convertWinPath function. the “GetProcessImageFileNameA” is a windows API which returns the image name from the point of view of the kernel. The kernel does not deal in logical drive letters like C: or D:, and instead would output a raw device path such as \Device\HarddiskVolume0\.

For the sake of user friendliness, it’s advisable to lookup the corresponding drive letter, for example like so:

std::string convertWinPath(std::string pathname) {

    std::regex e("\\\\Device\\\\HarddiskVolume[0-9]+\\\\");
    std::smatch device_match;

    // check if the incoming pathname actually includes the raw device path
    if (std::regex_search(pathname, device_match, e)) {
        auto devicePath = device_match[0].str();
        std::string driveLetter = "";
        
        std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
        std::wstring wPathname = converter.from_bytes(pathname);
       
        LPCWSTR pathLP = wPathname.c_str();
        WCHAR volume_path[MAX_PATH];  // MAX_PATH = 256

        // this is the actial windows API call
        GetVolumePathNameW(pathLP, volume_path, MAX_PATH);
        
        // there's a bunch of ways to convert from wstring to string, here i happen to use
        // a function included in the krabsetw library
        driveLetter = krabs::from_wstring(volume_path);        

        // again - multiple ways of replacing the device path with the drive letter,
        // here I happen to use a function provided by the "boost" library
        boost::replace_first(pathname, devicePath, driveLetter);

    }
    return pathname;
}

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

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

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

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

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

CQRS (Command Query Responsibility Segregation) на Java

Javaican 12.05.2025

CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .

Шаблоны и приёмы реализации DDD на C#

stackOverflow 12.05.2025

Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .

Исследование рантаймов контейнеров Docker, containerd и rkt

Mr. Docker 11.05.2025

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

Micronaut и GraalVM — будущее микросервисов на Java?

Javaican 11.05.2025

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

Автор Тема: Имя процесса по PID windows  (Прочитано 7364 раз)
Givoi

Гость


как в винде узнать имя процесса по его PID?

Записан

Igors


C++ (Qt)

HANDLE proc = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, theProcessID);
if (!proc) return false;

 char buf[MAX_PATH];
if (::GetProcessImageFileName(proc, buf, sizeof(buf) - 1)) {
...
}
CloseHandle(proc);

Записан

Alex Custov


Я бы сказал

C++ (Qt)

   DWORD pid = ...;

     HANDLE h = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);

     if(!h)
       return false;

     TCHAR tname[MAX_PATH];

     if(!::GetProcessImageFileName(h, tname, sizeof(tname)))
       return false;

     QString name = QFileInfo(
#ifdef UNICODE
       QString::fromWCharArray(tname)
#else
       QString::fromUtf8(tname)
#endif
       ).fileName();

     ::CloseHandle(h);

« Последнее редактирование: Марта 09, 2012, 18:39 от Alex Custov »

Записан

Givoi

Гость


 В  msdn, про GetProcessImageFileName написано что надо подключать Psapi.h, но на семерке при компилирование вылетает ошибка

‘::GetProcessImageFileName’ has not been declared

« Последнее редактирование: Марта 09, 2012, 19:39 от Givoi »

Записан

Givoi

Гость


ещё из msdn

Library
Kernel32.lib on Windows 7 and Windows Server 2008 R2;

как это понять? к проекту нужно конектить Kernel32.lib?

Записан

Alex Custov


Из MSDN:

Minimum supported client Windows XP

Добавь в pro файл

DEFINES += _WIN32_WINNT=0x0501 WINVER=0x0501

и нужно линковаться с psapi, для mingw:

LIBS += -lpsapi

c kernel32 линковка идёт и так, ничего дополнительно прописывать не нужно.

« Последнее редактирование: Марта 09, 2012, 19:43 от Alex Custov »

Записан

Givoi

Гость


работает =) большущее спасибо =)

Записан

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как запустить средство проверки системных файлов в windows 10
  • Автономный установщик обновления для windows 7
  • Как открыть буфер обмена на ноутбуке на windows 10
  • Как создать учетную запись в windows 10 корпоративная
  • Ошибка выделения рабочего стола из кучи windows 10