The search order varies depending on the state of SafeDllSearchMode.

Windows DLL search order if SafeDllSearchMode is enabled:

  • The application directory
  • The system directory (as returned by GetSystemDirectory())
  • The 16-bit (!) system directory
  • The Windows directory (as returned by GetWindowsDirectory())
  • The current directory (!)
  • The system PATH (!)

Windows DLL search order if SafeDllSearchMode is disabled:

  • The application directory
  • The current directory (!)
  • The system directory (as returned by GetSystemDirectory())
  • The 16-bit (!) system directory
  • The Windows directory (as returned by GetWindowsDirectory())
  • The system PATH (!)

Note that it seems more-or-less impossible to determine what DLLs an application is searching for without having SYSTEM access already (so tools like ProcMon can be run).