使用QProcessEnvironment更改cmd.exe的PATH环境变量

Woomla

我想从具有特定PATH设置的Qt应用程序启动cmd.exe。我在QProcessEnvironment中插入“路径”,并将该环境设置为QProcess。然后我开始分离“ cmd”。在命令提示符下,路径与调用应用程序中的路径相同,而不是我刚刚设置的路径。我错过了什么?我在Windows 8.1.s上将Qt 5.2.0与mingw和Qt-creator 3.0.0一起使用

QProcess process(this);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("Path", "MyPath");
process.setProcessEnvironment(env);
QStringList args;
args << "/D" << "/K" << "dir";
process.startDetached("cmd", args);
大卫·赫弗南(David Heffernan)

startDetached方法是静态方法。因此,您应用于process对象的所有状态都将被忽略,因为该方法无法看到它。如果您start()改用该流程开始,则新流程将适应您的环境。

process.start("cmd", args);

当然,您希望分离新进程,以便父级可以终止而不必强制新进程也终止。据我所知,该QProcess课程无法为您提供轻松实现这一目标的方法。您可以修改父流程的环境,以使新流程继承那些修改,但这听起来并不理想。

这个问题提出了一个可能的解决方法:分离已启动的进程

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章