我正在尝试使用执行 cmd 命令
QProcess::startDetached("cmd /c net stop \"MyService\"");
Run Code Online (Sandbox Code Playgroud)
这似乎并没有停止服务。但是,如果我从 start >> run 运行它,它会起作用。
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)