wxExecute не может выполнить файл, который требует прав администратора UAC

От WxWidgets приложение, которое я пытаюсь запустить установщик, сделано с NSIS, в беззвучном режиме (/ S флаг). Получил эту ошибку:

Выполнение команды: «C: \ somecommand.exe» не удалось (ошибка 0: Операция
завершена успешно

Когда я запускаю установщик в режиме без вывода сообщений из командной строки, я получаю всплывающее окно UAC, но когда я запускаю его из приложения wxWidget, я получаю только эту ошибку. А что означает эта ошибка? Как «Фатальная ошибка: все в порядке».

В NSIS скрипт у меня есть RequestExecutionLevel admin, потому что мне действительно нужно иметь возможность устанавливать программы в каталогах, таких как Program Files.

0

Решение

Чтобы запустить приложение Windows, требующее повышения прав, вы должны использовать ShellExecute и не CreateProcess, CreateProcess просто завершится ошибкой с необходимостью повышения прав.

Я полагаю, что wxLaunchDefaultApplication использования ShellExecute внутренне, но кажется немного рискованным полагаться на это, так что вы также можете использовать ifdef:

#ifdef __WINDOWS__  // __WXMSW__
ShellExecute(0, 0, pathtoexe, parameters, 0, SW_SHOW);
#else
wxExecute(something);
#endif
1

Другие решения


По вопросам рекламы [email protected]