共用方式為


setDllDirectoryA 函式 (winbase.h)

將目錄新增至用來尋找應用程式的 DLL 的搜尋路徑。

語法

BOOL SetDllDirectoryA(
  [in, optional] LPCSTR lpPathName
);

參數

[in, optional] lpPathName

要新增至搜尋路徑的目錄。 如果此參數是空字串 (“”) ,則呼叫會從預設 DLL 搜尋順序中移除目前目錄。 如果此參數為 NULL,函式會還原預設搜尋順序。

傳回值

如果函式成功,則傳回非零的值。

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

備註

SetDllDirectory 函式會影響 LoadLibrary 和 LoadLibraryEx 函式的所有後續呼叫。 當指定的目錄位於搜尋路徑時,它也會有效地停用安全的 DLL 搜尋模式。

注意

對於 執行封裝或受保護進程的 Win32 進程,呼叫此函式也會影響從已呼叫函式的進程啟動之子進程的 DLL 搜尋順序。

呼叫 SetDllDirectory 之後,標準 DLL 搜尋路徑為:

  1. 應用程式從中載入的目錄。
  2. lpPathName 參數所指定的目錄。
  3. 系統目錄。 使用 GetSystemDirectory 函式來取得此目錄的路徑。 此目錄的名稱為 System32。
  4. 16 位系統目錄。 沒有可取得此目錄路徑的函式,但會加以搜尋。 此目錄的名稱為 System。
  5. Windows 目錄。 使用 GetWindowsDirectory 函 式來取得此目錄的路徑。
  6. PATH 環境變數中所列的目錄。
每次呼叫 SetDllDirectory 函式時,都會取代先前 SetDllDirectory 呼叫中指定的目錄。 若要指定多個目錄,請使用 AddDllDirectory 函式,並使用 LOAD_LIBRARY_SEARCH_USER_DIRS呼叫 LoadLibraryEx

若要還原為 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

另請參閱

AddDllDirectory

動態連結庫搜尋順序

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx