Forgive my naive post in this thread. I thought that enabling safe search mode would stop DLL hijacking?
[SPOILER="Registry key"]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"SafeDllSearchMode"=dword:00000001
[/SPOILER]
___________________
EDIT 1
According to Microsoft it is enabled by default now
[SPOILER="SafeSearchDLL order"]
Safe DLL search mode is enabled by default.
If SafeDllSearchMode is enabled, the search order is as follows:
- The directory from which the application loaded.
- The system directory. Use the GetSystemDirectory function to get the path of this directory.
- The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
- The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
- The current directory.
- The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.
[/SPOILER]
--------------------------
EDIT 2
I am understanding it now, by starting an application in a User folder, the replacement DLL hijacks the DLL loading because it is in the "The directory from which the application loaded." 
Luckily my WDAC policy only allows Microsoft signed (and Syncback) DLL's to execute in user space. 