【发布时间】:2014-04-26 21:17:29
【问题描述】:
我正在编写一个需要调用系统程序 (netsh) 并以管理员身份运行的 Qt 应用程序。
但是,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),但没有任何效果。
我也尝试添加清单文件,但没有任何解决。
我是否遗漏了代码中的某些内容? (欢迎举例)。
【问题讨论】:
-
如果我没记错的话,您需要要求您的完整 QT 程序以管理员身份运行 (qtcentre.org/threads/…) - 然后您可以通过 shellexecute/system() 启动应用程序
-
这是特定于平台的功能。你的代码没问题。
标签: c++ qt shell uac administrator