QProcess:即使提供了完整路径,系统也找不到指定的文件
QProcess: The system cannot find the file specificed even when full path is provided
这是我的完整代码:
#include <QCoreApplication>
#include "iostream"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QProcess process;
QString path = "C:\Windows\System32\wbem\WMIC.exe";
QString arg = "cpu get name";
QStringList arguments; arguments << arg;
//process.start(path,arguments);
process.start(path + " " + arg);
//qDebug() << "Started";
std::cout << "Started" << std::endl;
if (!process.waitForFinished()){
qDebug() << "ERROR" << process.errorString();
}
else {
qDebug() << "Printing output";
qDebug().noquote() << process.readAllStandardOutput();
}
qDebug() << "Finished";
return 0;
//return a.exec();
}
我正在尝试从 Windows 机器获取一些硬件规格(例如 GPU 卡的型号,或者在本例中为 CPU)。我读过带有正确参数的 wmic 命令可以让我得到这个。但是在多次尝试之后,我只剩下这两个不起作用的选项:
如果参数用“cpu get name”填充,我会得到一个空字符串。
如果没有提供参数,我会在标题中得到错误。我认为这意味着 QProcess class 找不到指定的文件。我不知道这怎么可能,因为字面上添加了整个路径。
如有任何帮助,我们将不胜感激。
我还读到这可能是编译器的原因,以防万一我使用 MSVC2019 编译 64 位应用程序。
使用QStringList arguments = arg.split(" ");
然后process.start(path,arguments);
。
这是我的完整代码:
#include <QCoreApplication>
#include "iostream"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QProcess process;
QString path = "C:\Windows\System32\wbem\WMIC.exe";
QString arg = "cpu get name";
QStringList arguments; arguments << arg;
//process.start(path,arguments);
process.start(path + " " + arg);
//qDebug() << "Started";
std::cout << "Started" << std::endl;
if (!process.waitForFinished()){
qDebug() << "ERROR" << process.errorString();
}
else {
qDebug() << "Printing output";
qDebug().noquote() << process.readAllStandardOutput();
}
qDebug() << "Finished";
return 0;
//return a.exec();
}
我正在尝试从 Windows 机器获取一些硬件规格(例如 GPU 卡的型号,或者在本例中为 CPU)。我读过带有正确参数的 wmic 命令可以让我得到这个。但是在多次尝试之后,我只剩下这两个不起作用的选项:
如果参数用“cpu get name”填充,我会得到一个空字符串。
如果没有提供参数,我会在标题中得到错误。我认为这意味着 QProcess class 找不到指定的文件。我不知道这怎么可能,因为字面上添加了整个路径。
如有任何帮助,我们将不胜感激。
我还读到这可能是编译器的原因,以防万一我使用 MSVC2019 编译 64 位应用程序。
使用QStringList arguments = arg.split(" ");
然后process.start(path,arguments);
。