在Win32 API中,给定PID,如何确定磁盘上的可执行文件路径?

时间:2014-05-11 14:17:06

标签: winapi

在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"?

1 个答案:

答案 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。