NeedCurrentDirectoryForExePathA 函式 (processenv.h)
判斷目前目錄是否應該包含在指定可執行檔的搜尋路徑中。
語法
BOOL NeedCurrentDirectoryForExePathA(
[in] LPCSTR ExeName
);
參數
[in] ExeName
可執行檔的名稱。
傳回值
如果目前目錄應該是搜尋路徑的一部分,傳回值為TRUE。 否則,傳回值為 FALSE。
言論
只有在呼叫端必須明確地將相對可執行檔名稱解析為絕對名稱的實例中,才應該呼叫此函式。 如果 CreateProcess 是以相對可執行檔名稱呼叫,它會自動搜尋可執行檔,呼叫此函式以判斷搜尋路徑。
大部分的系統函式都會執行自己的路徑解析,因此,只有在您嘗試根據目前目錄解析指定可執行檔的搜尋路徑時,才應該呼叫此函式。
NoDefaultCurrentDirectoryInExePath 環境變數的值會決定此函式傳回的值。 不過,您應該呼叫此函式,而不是直接檢查環境變數,因為此環境變數的登錄位置可能會變更。
如果 ExeName 參數的值包含反斜杠 (\),此函式一律會傳回 TRUE。 如果它不包含反斜杠,則會檢查 NoDefaultCurrentDirectoryInExePath 環境變數是否存在,而不是其值。
當應該呼叫此函式,而不是依賴 CreateProcess 中的預設搜尋路徑解析演算法時,實例的範例就是 “cmd.exe” 可執行檔。 它會呼叫此函式來判斷命令搜尋路徑,因為它會在呼叫 createProcess 之前執行自己的路徑解析。 如果此函式傳回 TRUE,cmd.exe 會使用路徑 “.;%PATH%“,用於可執行文件搜尋。 如果傳回 FALSE,cmd.exe 會使用路徑 「%PATH%」 進行搜尋。
注意
processenv.h 標頭會根據 UNICODE 預處理器常數的定義,將 NeedCurrentDirectoryForExePath 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | processenv.h (包括 Windows Vista 上的 Windows.h、Windows 7、Windows Server 2008 Windows Server 2008 R2) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |