以admin Qt运行命令行进程

时间:2014-03-20 07:17:40

标签: 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),没有任何效果。

我还试图添加一个清单文件,但没有解决任何问题。

我的代码中是否遗漏了一些内容? (欢迎举例)。

1 个答案:

答案 0 :(得分:1)

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

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