Actually if the dlls is in the same directory it does mean that windows will look there even if the current directory is not in your path (always true if the executable is in the same location, only true if safe dll search is off) given that windows has not found the dll registered in the system in any other place and there are no overrides anywhere else. The search goes in this order: If the dll is already in memory, this is used. If the dll is in the list of known dlls versions it is loaded from there (list of dlls is at HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs) If it is not found in any of those locations then it is searched Finally dependencies are resolved using this steps as well If dll has not been found and it is not overridden by a full path definition nor a manifest then the search goes as follow Directory from which the application was loaded If safe dll search mode is disabled then the current directory is searched The system directory - starting with the current arch, then fallbacks to previous archs The windows directory And finally all the path environment variable Hopes this helps a little bit. Reference: https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order Best regards - Cristobal E