You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sets the default load flags used when `LoadLibrary` is used to load DLLs.
10
+
Sets the default load flags used when the imports of the module are resolved.
11
11
12
12
## Syntax
13
13
@@ -16,17 +16,15 @@ Sets the default load flags used when `LoadLibrary` is used to load DLLs.
16
16
### Arguments
17
17
18
18
*load_flags*<br/>
19
-
An optional "C"-style 16-bit integer value in decimal, octal with a leading zero, or hexadecimal with a leading `0x`, that specifies the dependent load flags to apply to all [LoadLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw)calls. The default value is 0.
19
+
An optional integer value that specifies the load flags to apply when resolving import dependencies of the module. The default value is 0. For a list of supported values, see the LOAD_LIBRARY_SEARCH entries in the [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw)documentation.
20
20
21
21
## Remarks
22
22
23
23
This option is new in Visual Studio 2017. It applies only to apps running on Windows 10 RS1 and later versions. This option is ignored by other operating systems that run the app.
24
24
25
-
On supported operating systems, this option has the effect of changing calls to `LoadLibrary("dependent.dll")`to the equivalent of `LoadLibraryEx("dependent.dll", 0, load_flags)`. Calls to [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) are unaffected. This option doesn't apply recursively to DLLs loaded by your app.
25
+
When the operating system resolves the imports of a module, it uses the [default search order](/windows/win32/dlls/dynamic-link-library-search-order). Its behavior is similar to the behavior of [LoadLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibrarya). You can use **/DEPENDENTLOADFLAG** to specify a *load_flags* value that changes the search path used to resolve imports. On supported operating systems, it makes import resolution behave more like [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa). For information on the search order set by dependent load flags, see [Search order using LOAD_LIBRARY_SEARCH flags](/windows/win32/dlls/dynamic-link-library-search-order#search-order-using-load_library_search-flags).
26
26
27
-
This flag can be used to make [DLL planting attacks](/windows/win32/dlls/dynamic-link-library-security) more difficult. For example, if an app uses `LoadLibrary` to load a dependent DLL, an attacker could plant a DLL with the same name in the search path used by `LoadLibrary`, such as the current directory, which may be checked before system directories if safe DLL search mode is disabled. Safe DLL search mode places the user's current directory later in the search order, and is enabled by default on Windows XP SP2 and later versions. For more information, see [Dynamic-Link Library Search Order](/windows/win32/Dlls/dynamic-link-library-search-order).
28
-
29
-
If you specify the link option `/DEPENDENTLOADFLAG:0xA00` (the value of the combined flags `LOAD_LIBRARY_SEARCH_APPLICATION_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32`), then even if safe DLL search mode is disabled on the user's computer, the DLL search path is limited to the application directory, followed by the %windows%\system32 directory. An option of `/DEPENDENTLOADFLAG:0x800` is even more restrictive, limiting search to the %windows%\system32 directory. Protected directories are more difficult - but not impossible - for an attacker to change. For information on the flags available, and their symbolic and numeric values, see the *dwFlags* parameter description in [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw). For information on the search order used when various dependent load flags are used, see [Search order using LOAD_LIBRARY_SEARCH flags](/windows/win32/dlls/dynamic-link-library-search-order#search-order-using-load_library_search-flags).
27
+
This flag can be used to make [DLL planting attacks](/windows/win32/dlls/dynamic-link-library-security) more difficult. For example, consider an app that imports a dependent DLL. An attacker could plant a DLL with the same name earlier in the import resolution search path, such as the current directory or application directory. If you specify the link option `/DEPENDENTLOADFLAG:0x800` (the value of the flag `LOAD_LIBRARY_SEARCH_SYSTEM32`), then even if safe DLL search mode is disabled on the user's computer, the module search path is limited to the %windows%\system32 directory. Protected directories are more difficult - but not impossible - for an attacker to change.
30
28
31
29
### To set the DEPENDENTLOADFLAG linker option in the Visual Studio development environment
32
30
@@ -43,8 +41,9 @@ If you specify the link option `/DEPENDENTLOADFLAG:0xA00` (the value of the comb
43
41
## See also
44
42
45
43
-[MSVC linker reference](linking.md)
46
-
-[MSVC Linker Options](linker-options.md)
47
-
-[Link an executable to a DLL](../linking-an-executable-to-a-dll.md#linking-implicitly)
48
-
-[Link an executable to a DLL](../linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use)
44
+
-[MSVC linker options](linker-options.md)
45
+
-[Link an executable to a DLL implicitly](../linking-an-executable-to-a-dll.md#linking-implicitly)
46
+
-[Determine which linking method to use](../linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use)
0 commit comments