c++ - 以管理员身份运行命令行进程 Qt

标签 c++ qt shell uac administrator

我正在编写一个 Qt 应用程序,它需要调用系统程序 (netsh) 并以管理员身份运行它们。

但是,QProcessQDesktopServicessystem() 不允许我以管理员身份运行应用程序(即使使用 runas).

我找到的唯一解决方案是使用 ShellExecute,但它甚至无法打开程序。

我的代码是:

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

我也尝试过使用其他选项,例如 open 并尝试运行其他程序,例如记事本 (notepad.exe) 和控制面板 (control.exe), 没有任何效果。

我也尝试添加 list 文件,但没有任何解决。

我的代码中是否遗漏了什么? (欢迎提供示例)。

最佳答案

LPCWSTR("runas") - 这是不正确的,您将字符串类型转换为宽字符串,ShellExecute 可能会返回错误并且不会启动应用程序。改为指定“L”前缀。 此外,您需要拆分命令和参数,“netsh wlan start hostednetwork”将不能用作命令名称。 像这样使用它:

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

关于c++ - 以管理员身份运行命令行进程 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526008/

相关文章:

c++ - 从 BYTE* Stream 在 Qt 中播放视频?

c++ - 使用 OpenCV 改进文本二值化/OCR 预处理

c++ - 如何在 vim 中编译多个 .cpp 文件

c++ - 如何在 C++/Qt 中递归地将数据写入文本文件

bash - UNIX 中的模式匹配解释

Linux备份文件命令

bash - Shell exec 和管道

c++ - 如何更改Visual Studio中所有项目的默认语言标准。 C++

c++ - 为什么没有在 top 和 pmap 中释放内存?

c++ - 将类附加到 QStandardItemModel