Сомнительно, что добавляются библиотеки для этой функции. Потом эта функция возвращает результат работы true/false. И вызов GetLastError должен прояснить ситуацию. В идеале в лог отправить все параметры структуры PShellExecuteInfo и результат GetLastError. Затем еще проверить, что у пользователей все что вы запускаете находится именно там. Далее будет видно. Может быть есть еще какие-нибудь фокусы с правами, наверняка разработчик работает с правами администратора, а вот пользователи скорей всего нет.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.