我正在编写一个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
),没有任何效果。
我还试图添加一个清单文件,但没有解决任何问题。
我的代码中是否遗漏了一些内容? (欢迎举例)。
答案 0 :(得分:1)
LPCWSTR(" runas") - 这是不正确的,你将字符串转换为宽字符串,可能ShellExecute将返回错误并且不启动应用程序。指定" L"前缀代替。 此外,您需要拆分命令和参数," netsh wlan start hostednetwork"将不会作为命令名称。 像这样使用它:
ShellExecute(0, L"runas", L"netsh", L"wlan start hostednetwork", 0, SW_SHOWNORMAL);