如何使用 QProcess 执行 cmd 命令?

Mis*_*tyD 5 c++ qt

我正在尝试使用执行 cmd 命令

QProcess::startDetached("cmd /c net stop \"MyService\"");
Run Code Online (Sandbox Code Playgroud)

这似乎并没有停止服务。但是,如果我从 start >> run 运行它,它会起作用。

The*_*ght 6

QProcess::startDetached 将第一个参数作为要执行的命令,后面的参数以空格分隔,将被解释为命令的单独参数。

因此,在这种情况下: -

QProcess::startDetached("cmd /c net stop \"MyService\"");
Run Code Online (Sandbox Code Playgroud)

该函数将cmd视为命令并将 /c、net、stop 和“MyService”作为参数传递给 cmd。但是,除了 /c 之外,其他的都是单独解析的,不是有效的参数。

你需要做的是在 "net stop \"MyService\" 周围使用引号将它作为单个参数传递,这样你就可以: -

QProcess::startDetached("cmd /c \"net stop \"MyService\"\"");
Run Code Online (Sandbox Code Playgroud)

或者,使用您可以使用的字符串列表: -

QProcess::startDetached("cmd", QStringList() << "/c" << "net stop \"MyService\"");
Run Code Online (Sandbox Code Playgroud)