【发布时间】: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 可能存在问题,或者默认使用句柄继承...