Q执行带参数的exe时出现进程问题

QProcess issue in executing a exe with arguments

本文关键字:进程 问题 exe 执行 行带 参数      更新时间:2023-10-16

我在将QProcess设置为使用参数运行可执行文件时遇到问题。相同的Qt代码如下,

QString program = "C:Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);

这个片段的输出是卸载一些程序。但这并没有发生。我做错了什么吗?

但如果我转到cmd提示符并执行相同的操作,如。,

c:/>"c:\/Setup.exe"-卸载这非常有效。

至少有两个选项可以解决您的问题。

  • 根据文档使用"/"作为目录分隔符:

    如果您总是使用"/",Qt将转换您的路径以符合底层操作系统。

  • 根据文档中的一个示例,每当使用字符串形式的文件路径时,请转义反斜杠:

    env.insert("TMPDIR", "C:\MyApp\temp"); // Add an environment variable
    env.insert("PATH", env.value("Path") + ";C:\Bin");
    

因此,你应该写这样的东西:

QString program = "C:/Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);

或者这个:

QString program = "C:\Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);

通常,当遇到此类问题时,您可以使用以下语法打印出错误字符串以获取更多信息:

qDebug() << myProcess.errorString();

当然,这需要一个实例。