C++ Windows - 如何从其 PID 获取进程路径(错误)
C++ Windows - How to get process path from its PID (error)
我想用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
- 获取模块文件名
- GetModuleFileNameEx
- GetProcessImageFileName
以上方法均出现错误。
是不是版本问题?
请回答。谢谢:)
您似乎忘记 link 您的产品带有 psapi.lib
。将其添加到项目依赖项中。
不确定它是否适用于 VC6.0。
但是 MSDN 推荐使用其他函数来检索进程名称:
To retrieve the name of the main executable module for a remote process, use the GetProcessImageFileName or QueryFullProcessImageName function. This is more efficient and more reliable than calling the GetModuleFileNameEx function with a NULL module handle.
我想用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
- 获取模块文件名
- GetModuleFileNameEx
- GetProcessImageFileName
以上方法均出现错误。
是不是版本问题?
请回答。谢谢:)
您似乎忘记 link 您的产品带有 psapi.lib
。将其添加到项目依赖项中。
不确定它是否适用于 VC6.0。
但是 MSDN 推荐使用其他函数来检索进程名称:
To retrieve the name of the main executable module for a remote process, use the GetProcessImageFileName or QueryFullProcessImageName function. This is more efficient and more reliable than calling the GetModuleFileNameEx function with a NULL module handle.