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

时间:2015-06-11 10:53:18

标签: c++ wxwidgets nsis

wxWidgets 应用程序我尝试以静音模式运行使用 NSIS 的安装程序( / S 标志)。得到了这个错误:

  

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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