Fungsi SetDefaultDllDirectories (libloaderapi.h)

Menentukan sekumpulan direktori default untuk dicari saat proses panggilan memuat DLL. Jalur pencarian ini digunakan ketika LoadLibraryEx dipanggil tanpa bendera LOAD_LIBRARY_SEARCH .

Sintaks

BOOL SetDefaultDllDirectories(
  [in] DWORD DirectoryFlags
);

Parameter

[in] DirectoryFlags

Direktori yang akan dicari. Parameter ini dapat berupa kombinasi apa pun dari nilai berikut.

Nilai Makna
LOAD_LIBRARY_SEARCH_APPLICATION_DIR
0x00000200
Jika nilai ini digunakan, direktori penginstalan aplikasi akan dicari.
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
0x00001000
Nilai ini adalah kombinasi dari LOAD_LIBRARY_SEARCH_APPLICATION_DIR, LOAD_LIBRARY_SEARCH_SYSTEM32, dan LOAD_LIBRARY_SEARCH_USER_DIRS.

Nilai ini menunjukkan jumlah maksimum direktori yang direkomendasikan yang harus disertakan aplikasi dalam jalur pencarian DLL-nya.

LOAD_LIBRARY_SEARCH_SYSTEM32
0x00000800
Jika nilai ini digunakan, %windows%\system32 dicari.
LOAD_LIBRARY_SEARCH_USER_DIRS
0x00000400
Jika nilai ini digunakan, jalur apa pun yang secara eksplisit ditambahkan menggunakan fungsi AddDllDirectory atau SetDllDirectory dicari. Jika lebih dari satu direktori telah ditambahkan, urutan di mana direktori tersebut dicari tidak ditentukan.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jalur pencarian DLL adalah kumpulan direktori yang dicari untuk DLL ketika jalur lengkap tidak ditentukan dalam panggilan fungsi LoadLibrary atau LoadLibraryEx , atau ketika jalur lengkap ke DLL ditentukan tetapi sistem harus mencari DLL dependen. Untuk informasi selengkapnya tentang jalur pencarian DLL standar, lihat Urutan Pencarian Pustaka Dynamic-Link.

Jalur pencarian DLL standar berisi direktori yang dapat rentan terhadap serangan pra-pemuatan DLL. Aplikasi dapat menggunakan fungsi SetDefaultDllDirectories untuk menentukan jalur pencarian DLL default untuk proses yang menghilangkan direktori yang paling rentan dan membatasi direktori lain yang dicari. Jalur pencarian DLL proses hanya berlaku untuk proses panggilan dan bertahan selama masa proses.

Jika parameter DirectoryFlags menentukan lebih dari satu bendera, direktori dicari dalam urutan berikut:

  • Direktori yang berisi DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR). Direktori ini hanya dicari untuk dependensi DLL yang dimuat.
  • Direktori aplikasi (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
  • Jalur secara eksplisit ditambahkan ke jalur pencarian aplikasi dengan fungsi AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) atau fungsi SetDllDirectory . Jika lebih dari satu jalur telah ditambahkan, urutan di mana jalur dicari tidak ditentukan.
  • Direktori Sistem (LOAD_LIBRARY_SEARCH_SYSTEM32).
Jika SetDefaultDllDirectories tidak menentukan LOAD_LIBRARY_SEARCH_USER_DIRS, direktori yang ditentukan dengan fungsi AddDllDirectory hanya digunakan untuk panggilan fungsi LoadLibraryEx yang menentukan LOAD_LIBRARY_SEARCH_USER_DIRS.

Tidak dimungkinkan untuk kembali ke jalur pencarian DLL standar atau menghapus direktori apa pun yang ditentukan dengan SetDefaultDllDirectories dari jalur pencarian. Namun, jalur pencarian DLL proses dapat diganti dengan memanggil LoadLibraryEx dengan satu atau beberapa bendera LOAD_LIBRARY_SEARCH , dan direktori yang ditambahkan dengan AddDllDirectory dapat dihapus dengan memanggil RemoveDllDirectory.

Windows 7, Windows Server 2008 R2, Windows Vista, dan Windows Server 2008: Untuk memanggil fungsi ini dalam aplikasi, gunakan fungsi GetProcAddress untuk mengambil alamatnya dari Kernel32.dll. KB2533623 harus diinstal pada platform target.

Persyaratan

   
Klien minimum yang didukung Windows 8 [hanya aplikasi desktop],KB2533623 di Windows 7, Windows Server 2008 R2, Windows Vista, dan Windows Server 2008
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Target Platform Windows
Header libloaderapi.h (termasuk Windows.h)
DLL Kernel32.dll

Lihat juga

AddDllDirectory

Urutan Pencarian Pustaka Dynamic-Link

Keamanan Pustaka Dynamic-Link

LoadLibrary

LoadLibraryEx

RemoveDllDirectory