setDllDirectoryA 函式 (winbase.h)
將目錄新增至用來尋找應用程式的 DLL 的搜尋路徑。
語法
BOOL SetDllDirectoryA(
[in, optional] LPCSTR lpPathName
);
參數
[in, optional] lpPathName
要新增至搜尋路徑的目錄。 如果此參數是空字串 (“”) ,則呼叫會從預設 DLL 搜尋順序中移除目前目錄。 如果此參數為 NULL,函式會還原預設搜尋順序。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
SetDllDirectory 函式會影響 LoadLibrary 和 LoadLibraryEx 函式的所有後續呼叫。 當指定的目錄位於搜尋路徑時,它也會有效地停用安全的 DLL 搜尋模式。
注意
對於 未 執行封裝或受保護進程的 Win32 進程,呼叫此函式也會影響從已呼叫函式的進程啟動之子進程的 DLL 搜尋順序。
呼叫 SetDllDirectory 之後,標準 DLL 搜尋路徑為:
- 應用程式從中載入的目錄。
- lpPathName 參數所指定的目錄。
- 系統目錄。 使用 GetSystemDirectory 函式來取得此目錄的路徑。 此目錄的名稱為 System32。
- 16 位系統目錄。 沒有可取得此目錄路徑的函式,但會加以搜尋。 此目錄的名稱為 System。
- Windows 目錄。 使用 GetWindowsDirectory 函 式來取得此目錄的路徑。
- PATH 環境變數中所列的目錄。
若要還原為 LoadLibrary 和LoadLibraryEx 所使用的標準搜尋路徑,請使用 NULL 呼叫 SetDllDirectory 。 這也會根據 SafeDllSearchMode 登錄值還原安全的 DLL 搜尋模式。
若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0502或更新版本。 如需詳細資訊,請參閱 使用 Windows 標頭。
注意
winbase.h 標頭會將 SetDllDirectory 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista、Windows XP SP1 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |