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 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winbase.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |