簡體   English   中英

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
  • 獲取模塊文件名
  • 獲取模塊文件名Ex
  • 獲取進程圖像文件名

以上所有方法都導致了錯誤。

這是版本的問題嗎?

請回答。 謝謝 :)

您似乎忘記將您的產品與psapi.lib鏈接。 將其添加到項目依賴項中。

不確定它是否可以在 VC6.0 中工作。

但是 MSDN 建議使用其他函數來檢索進程名稱:

要檢索遠程進程的主要可執行模塊的名稱,請使用GetProcessImageFileNameQueryFullProcessImageName函數。 這比使用 NULL 模塊句柄調用GetModuleFileNameEx函數更有效、更可靠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM