Запустите процесс командной строки от имени администратора Qt

Я пишу приложение Qt, которое должно вызывать системные программы (netsh) и запустить их от имени администратора.

Тем не мение, QProcess, QDesktopServices а также system() не позволяйте мне запускать приложение от имени администратора (даже с runas).

Единственное решение, которое я нашел, это использовать ShellExecute, но он даже не открывает программу.

Мой код:

#ifdef Q_OS_WIN {
ShellExecute(0, LPCWSTR("runas"), LPCWSTR("netsh wlan start hostednetwork"), 0, 0, SW_SHOWNORMAL);
}

Я также пытался использовать другие варианты, такие как open и попытался запустить другие программы, такие как Блокнот (notepad.exe) и панель управления (control.exe) ничего не получалось.

Я также попытался добавить файл манифеста, и ничего не было решено.

Я что-то пропускаю в своем коде? (примеры приветствуются).

2

Решение

LPCWSTR («runas») — это неверно, вы вводите строку в самое широкое и, вероятно, ShellExecute вернет ошибку и не запустит приложение. Вместо этого укажите префикс «L».
Кроме того, вам нужно разделить команду и параметры: «netsh wlan start hostednetwork» не будет работать в качестве имени команды.
Используйте это так:

ShellExecute(0, L"runas", L"netsh", L"wlan start hostednetwork", 0, SW_SHOWNORMAL);
1

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

Других решений пока нет …