Naja, wenn man das Script von einem anderen Verzeichnis aus startet (z.b. mit Ausführen), dann ist das Arbeitsverzeichnis anders als das Scriptverzeichnis. Folglich wird die .lnk im falschen Verzeichnis gesucht...
ShellExecute(@ScriptDir & "\WordPad.lnk") = Scriptverzeichnis
ShellExecute("\WordPad.lnk") = Arbeitsverzeichnis
lgE