gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:09:33 25 4
gpt4 key购买 nike

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

最佳答案

startDetached 方法是一个静态方法。因此,您应用于 process 对象的所有状态都将被忽略,因为该方法看不到它。如果您改为使用 start() 启动进程,新进程将选择您的环境。

process.start("cmd", args);

当然,您希望分离新进程,以便父进程可以终止而不会强制新进程也终止。据我所知,QProcess 类没有为您提供轻松实现该目标的方法。您可以修改父进程的环境,以便新进程继承这些修改,但这听起来一点都不可取。

这个问题提供了一个可能的解决方法:Detaching a started process .

关于c++ - 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com