getProcessImageFileNameA 函式 (psapi.h)

擷取指定進程的可執行檔名稱。

語法

DWORD GetProcessImageFileNameA(
  [in]  HANDLE hProcess,
  [out] LPSTR  lpImageFileName,
  [in]  DWORD  nSize
);

參數

[in] hProcess

進程的句柄。 句柄必須具有 PROCESS_QUERY_INFORMATIONPROCESS_QUERY_LIMITED_INFORMATION 訪問許可權。 如需詳細資訊,請參閱 處理安全性和訪問許可權

Windows Server 2003 和 Windows XP: 句柄必須具有 PROCESS_QUERY_INFORMATION 訪問許可權。

[out] lpImageFileName

緩衝區的指標,可接收可執行檔的完整路徑。

[in] nSize

lpImageFileName 緩衝區的大小,以字元為單位。

傳回值

如果函式成功,傳回值會指定複製到緩衝區的字串長度。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

檔案 Psapi.dll 安裝在 %windir%\System32 目錄中。 如果電腦上有另一個 DLL 複本,可能會導致在系統上執行應用程式時發生下列錯誤:「程序進入點 GetProcessImageFileName 無法位於動態連結庫 PSAPI.DLL」。若要解決此問題,請找出不在 %windir%\System32 目錄中的任何版本,並刪除或重新命名它們,然後重新啟動。

GetProcessImageFileName 函式會以裝置形式傳回路徑,而不是驅動器號。 例如,檔名 C:\Windows\System32\Ctype.nls 會以裝置形式如下所示:

\Device\Harddisk0\Partition1\Windows\System32\Ctype.nls

若要擷取目前進程的模組名稱,請使用 GetModuleFileName 函式搭配 NULL 模組句柄。 比使用目前進程的句柄呼叫 GetProcessImageFileName 函式更有效率。

若要擷取 win32 路徑格式遠端進程的主要可執行模組名稱,請使用 QueryFullProcessImageName 函式。

從 Windows 7 和 Windows Server 2008 R2 開始,Psapi.h 會建立 PSAPI 函式的版本號碼。 PSAPI 版本號碼會影響用來呼叫函式的名稱,以及程式必須載入的連結庫。

如果 PSAPI_VERSION 為 2 或更新版本,此函式會定義為 Psapi.h 中的 K32GetProcessImageFileName ,並在 Kernel32.lib 和 Kernel32.dll 中導出。 如果 PSAPI_VERSION 為 1,此函式會定義為 Psapi.h 中的 GetProcessImageFileName ,並在 Psapi.lib 中導出,並 Psapi.dll 為呼叫 K32GetProcessImageFileName 的包裝函式。

必須在舊版 Windows 和 Windows 7 和更新版本上執行的程式應該一律將此函式呼叫為 GetProcessImageFileName。 若要確保符號的正確解析度,請將 Psapi.lib 新增至 TARGETLIBS 宏,並使用 -DPSAPI_VERSION=1 編譯程式。 若要使用運行時間動態連結,請載入 Psapi.dll。

注意

psapi.h 標頭會將 GetProcessImageFileName 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 psapi.h
程式庫 Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;如果 Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.lib (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib
Dll Windows 7 和 Windows Server 2008 R2 上的 Kernel32.dll;如果 windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,則為 Psapi.dll (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll

另請參閱

PSAPI 函式

進程資訊

QueryFullProcessImageName