c++ - wxExecute 无法执行需要管理员权限 UAC 的文件

标签 c++ wxwidgets nsis

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

Execution of command: "C:\somecommand.exe" failed (error 0: Операция завершена успешно / Successful).

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

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

最佳答案

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

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

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

关于c++ - wxExecute 无法执行需要管理员权限 UAC 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30778791/

相关文章:

c++ - VC++中的指针运算(三重指针赋值)

c++ - 运算符>> 在带有 std::ignore 的绑定(bind)元组上

c++ - 比较两个 vector<Structs> 的字符串元素

python - wxPython:确保面板中只有一个实例处于打开状态

installation - Nsis 安装程序获取文件大小

c++ - 在嵌套类中对 operator[] 的调用不明确

c++ - 如何检查从菜单中选择了哪个项目?如何通过选择菜单项发送 int/wxstring?

c++ - wxButton - 使用 C++ 改变位置

NSIS 滚动许可证欢迎屏幕

windows - 如何为 Electron 应用程序设置 ProgId?