【问题标题】:Run command line process as admin Qt以管理员身份运行命令行进程 Qt
【发布时间】:2014-04-26 21:17:29
【问题描述】:

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

但是,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),但没有任何效果。

我也尝试添加清单文件,但没有任何解决。

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

【问题讨论】:

  • 如果我没记错的话,您需要要求您的完整 QT 程序以管理员身份运行 (qtcentre.org/threads/…) - 然后您可以通过 shellexecute/system() 启动应用程序
  • 这是特定于平台的功能。你的代码没问题。

标签: c++ qt shell uac administrator


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2011-08-22
    • 2011-12-03
    相关资源
    最近更新 更多