C Windows-如何从其PID(错误)获取过程路径



我想使用pid获取该过程的完整路径。

#include <psapi.h>
HANDLE processHandle = NULL;
TCHAR filename[MAX_PATH];
processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, nPID);
if (processHandle != NULL) 
{
    if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0) 
    {
        //fail to get module file name
    } 
    else 
    {
        //module file name : filename
    }
    CloseHandle(processHandle);
} 
else 
{
    //fail to open process
}

这是使用PID获取过程路径的代码。

但是,当我执行它时,会发生以下错误。

(我正在使用Visual C 6.0。(

Linking...
Process01Dlg.obj : error LNK2001: unresolved external symbol _GetModuleFileNameExA@16
Debug/Process01.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
  • queryfullprocessimagename
  • getModuleFilename
  • getModuleFilenameEx
  • getProcessimageFilename

上述所有方法都导致错误。

这是版本的问题吗?

请回答。谢谢:(

看来您忘记了将产品与psapi.lib联系起来。将其添加到项目依赖项中。

不确定它是否在VC6.0中起作用。

但是,MSDN推荐其他功能以检索过程名称:

要检索远程过程的主可执行模块的名称,请使用 getProcessimageFileName QUERYFULLPROPROCESSIMAGENAME 函数。这比调用Null Module句柄

来调用 getModuleFileNameEx 功能更高效,更可靠。

相关内容

  • 没有找到相关文章

最新更新