我正在编写一个 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
), 没有任何效果。
我也尝试添加 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/