共用方式為


SetDllDirectoryA 函式 (winbase.h)

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

語法

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

參數

[in, optional] lpPathName

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

傳回值

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

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

言論

SetDllDirectory 函式會影響對 LoadLibraryLoadLibraryEx 函式的所有後續呼叫。 當指定的目錄位於搜尋路徑時,它也會有效地停用安全的 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

若要還原為 LoadLibraryLoadLibraryEx所使用的標準搜尋路徑,請使用 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

另請參閱

AddDllDirectory

Dynamic-Link 連結庫搜尋順序

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx