【问题标题】:wxExecute can't execute file that needs admin permissions UACwxExecute 无法执行需要管理员权限的文件 UAC
【发布时间】:2015-06-11 10:53:18
【问题描述】:

从 wxWidgets 应用程序中,我尝试在静默模式下运行由 NSIS 制作的安装程序(/S 标志)。收到此错误:

执行命令:“C:\somecommand.exe”失败(错误 0:Операция завершена успешно / 成功)。

当我从命令行静默运行安装程序时,我得到了 UAC 弹出窗口,但是当我从 wxWidget 应用程序执行它时,我只得到了这个错误。这个错误意味着什么?就像“致命错误:一切都好”。

在 NSIS 脚本中,我有 RequestExecutionLevel admin,因为我真的需要它能够在 Program Files 等目录中安装程序。

【问题讨论】:

  • 你将哪些标志传递给wxExecute()?它适用于 wxWidgets "exec" 示例中的 wxEXEC_SYNC 和 wxEXEC_ASYNC 以及我在这里拥有的安装程序,即它启动并显示 UAC 对话框。另外,您使用哪个版本的 wx?
  • wxEXEC_ASYNC 默认情况下,所以我没有传递任何标志。 wxWidgets 3.0.2 版本

标签: c++ wxwidgets nsis


【解决方案1】:

要启动需要提升的 Windows 应用程序,您必须使用 ShellExecute 而不是 CreateProcess,CreateProcess 将失败并出现需要提升的错误。

我想wxLaunchDefaultApplication 在内部使用ShellExecute,但依赖它似乎有点冒险,所以你不妨使用 ifdef:

#ifdef __WINDOWS__  // __WXMSW__
ShellExecute(0, 0, pathtoexe, parameters, 0, SW_SHOW);
#else
wxExecute(something);
#endif

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多