在Win32中,我获得了某个正在运行的进程的进程ID。现在,我想确定文件系统中进程可执行文件所在的路径。
例如。如果"任务列表"显示"图像名称"成为" foobar.exe"并且PID为1234.可执行文件位于c:\ Program Files(x86)\ Acme Corp \ foobar.exe
哪个Win32 API调用将接受PID 1234并给我路径" c:\ Program Files(x86)\ Acme Corp \ foobar.exe"?
答案 0 :(得分:6)
您应该使用OpenProcess打开进程以获取进程句柄,然后使用句柄使用GetModuleFileNameEx API函数获取路径。
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, _PID_);
if (hProcess)
{
TCHAR path[MAX_PATH];
if (GetModuleFileNameEx(hProcess, NULL, path, sizeof(path)))
{
MessageBox(0, path, "The path", MB_ICONINFORMATION);
}
CloseHandle(hProcess);
}
如果我没记错的话,使用“PROCESS_QUERY_INFORMATION | PROCESS_VM_READ”足以获取路径检索的进程句柄。如果失败,请使用PROCESS_ALL_ACCESS。