Похоже, я уже все делаю правильно. Если я перехожу в% windir%, он работает нормально.
Я предполагаю, что переменная CD никогда не устанавливается без помощи командной строки.
Я полагаю, что единственным решением для моей конкретной проблемы является использование пакетного файла вместо .lnk (ярлык).
РЕДАКТИРОВАТЬ : Решение
Я обнаружил, что вы можете просто запустить cmd.exe и передать туда exe и аргументы.
Если у пользователей есть пробелы (я ненавижу пробелы), вы должны заключить весь аргумент для cmd.exe в двойные кавычки, а также отдельные элементы, например, так
C: \ Windows \ System32 \ cmd.exe / c "" C: \ Users \\ Путь к Exe \ myProgram.exe "-ldir"% cd% ""