Я пишу приложение 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
) ничего не получалось.
Я также попытался добавить файл манифеста, и ничего не было решено.
Я что-то пропускаю в своем коде? (примеры приветствуются).
LPCWSTR («runas») — это неверно, вы вводите строку в самое широкое и, вероятно, ShellExecute вернет ошибку и не запустит приложение. Вместо этого укажите префикс «L».
Кроме того, вам нужно разделить команду и параметры: «netsh wlan start hostednetwork» не будет работать в качестве имени команды.
Используйте это так:
ShellExecute(0, L"runas", L"netsh", L"wlan start hostednetwork", 0, SW_SHOWNORMAL);
Других решений пока нет …