运行命令行进程作为管理Qt

Run command line process as admin Qt

本文关键字:管理 Qt 命令行 进程 运行      更新时间:2023-10-16

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

但是,QProcess, QDesktopServicessystem()不允许我以管理员身份运行应用程序(即使是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") -这是不正确的,您将字符串类型转换为widestring,并且可能ShellExecute将返回错误并且不启动应用程序。指定"L"前缀代替。此外,您需要拆分命令和参数,"netsh wlan start hostdnetwork"将不能作为命令名。像这样使用:

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