在Win32中,我获得了某个运行进程的进程ID.现在,我想确定文件系统中进程可执行文件所在的路径.
例如.如果"tasklist"显示"image name"为"foobar.exe",PID为1234.可执行文件位于c:\ Program Files(x86)\ Acme Corp\foobar.exe
哪个Win32 API调用将接受PID 1234并给我路径"c:\ Program Files(x86)\ Acme Corp\foobar.exe"?
您应该使用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);
}
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,使用"PROCESS_QUERY_INFORMATION | PROCESS_VM_READ"足以获取路径检索的进程句柄.如果失败,则使用PROCESS_ALL_ACCESS.