Windows C++ - Как получить путь процесса от его PID

Как я могу получить полностью определенный путь процесса от его PID с помощью C++ в Windows?

13
задан Emerick Rogul 13 March 2012 в 14:19
поделиться

1 ответ

Вызов OpenProcess для получения хэндла процесса, связанного с вашим PID. После получения дескриптора процесса, вызовите GetModuleFileNameEx для получения его полноценного пути. Не забудьте вызвать CloseHandle по окончании работы с хэндлом процесса.

Вот пример программы, которая выполняет требуемые вызовы (замените 1234 на ваш PID):

#include <windows.h>
#include <psapi.h> // For access to GetModuleFileNameEx
#include <tchar.h>

#include <iostream>

using namespace std;

#ifdef _UNICODE
  #define tcout wcout
  #define tcerr wcerr
#else
  #define tcout cout
  #define tcerr cerr
#endif

int _tmain(int argc, TCHAR * argv[])
{
  HANDLE processHandle = NULL;
  TCHAR filename[MAX_PATH];

  processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, 1234);
  if (processHandle != NULL) {
    if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0) {
      tcerr << "Failed to get module filename." << endl;
    } else {
      tcout << "Module filename is: " << filename << endl;
    }
    CloseHandle(processHandle);
  } else {
    tcerr << "Failed to open process." << endl;
  }

  return 0;
}
26
ответ дан 1 December 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: