我正在尝试使用cmd命令执行操作。
QProcess::startDetached("cmd /c net stop \"MyService\"");
这似乎没有停止服务。但是,如果我从“开始”>>“运行”中运行它,它就能正常工作。
QProcess::startDetached会将第一个参数作为要执行的命令,接下来的参数以空格分隔,将被解释为要传递给该命令的单独参数。
因此,在这种情况下:
QProcess::startDetached("cmd /c net stop \"MyService\"");
该函数将cmd视为命令,并将/c、net、stop和"MyService"作为参数传递给cmd。但是,除了/c之外,其他参数被单独解析并且不是有效的参数。
您需要做的是在"net stop \"MyService\"周围使用引号,以便将其作为单个参数传递,这样就可以得到:-
QProcess::startDetached("cmd /c \"net stop \"MyService\"\"");
或者,使用字符串列表可以使用:
QProcess::startDetached("cmd", QStringList() << "/c" << "net stop \"MyService\"");
QProcess::startDetached("cmd /c \"net stop \\\"MyService\\\"\"");
(注意参数字符串内部的额外转义) - Martin Hennings
QProcess::startDetached("cmd.exe ", QStringList() << " /c " << " net " << " stop " << " \"MyService\"");
,但它没有起作用。 - MistyD