Как я могу получить полностью определенный путь процесса от его PID с помощью C++ в Windows?
Вызов 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;
}