The motivator is `ShellExecute`, currently it searches for executables first relative to the current executable, then relative to the current working directory; whereas it should only search in the current working directory.
While trying to fix that, I found some related bugs in `FindExecutable` and `PathResolve`.
-- v4: shell32: PathResolve should remove trailing dot.