【问题标题】:QProcess does not work in Program FilesQProcess 在程序文件中不起作用
【发布时间】:2017-05-02 09:51:39
【问题描述】:

我在 Windows 上使用 QProcess,但在运行位于 Program Files 中的 exe 文件时遇到问题。尝试使用 CreateProcess() 函数运行相同的工作正常。路径中的空间不是问题。我认为这与用户访问权限或类似的东西有关。 我可以使用 CreateProcess() 但我想知道是否有任何方法可以让 QProcess 按我的需要工作。

我的代码如下所示:

QProcess* myProcess = new QProcess(this);
myProcess->setProcessEnvironment(myEnvVars);
myProcess->start("myExePath");

编辑:我的平台是 Visual Studio 2015 和 Qt 4.71

【问题讨论】:

  • 我认为这与访问权限有关。创建进程后尝试调用GetLastError函数,返回值应为5,或者以管理员权限启动应用程序,以确保问题与访问权限有关。
  • 启动后尝试调用waitForStarted()方法。
  • 你为什么确定空格?您使用的 CreateProcess 和 QProcess::start 方法以不同方式对待您提供的字符串 - 可能与 in this question 相同的问题
  • @MikhailChurbanov 是的,我知道这个问题,但事实并非如此。为了确定,我做了几次测试。
  • @ni1ight,那很奇怪。我建议将setCreateProcessArgumentsModifier 与您用于CreateProcess 的相同配置一起使用。因为 start 方法实际上是在里面调用它。 QProcess 中的 Pipes 设置而不是标准 IO 可能存在问题,或者默认使用句柄继承...

标签: c++ qt qprocess


【解决方案1】:

我遇到了同样的问题,我使用了 startDetached 方法并且它有效。

QProcess* myProcess = new QProcess(this);
myProcess->setProcessEnvironment(myEnvVars);
myProcess->startDetached("myExePath");

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
相关资源
最近更新 更多