在程序启动运行时,有时候需要判断自己是否在虚拟机环境内运行的,所以需要些一些函数来做判断,windows系统可以执行WMIC命令通过WMI获取到到关键数据。
virtualBox如下:
//检测在VirtualBox虚拟机运行
bool IsInsideVirtualBox()
{
QProcess process;
process.start("wmic computersystem get Model");
process.waitForFinished();
QString strRest = process.readAllStandardOutput();
QStringList resutlList = strRest.split("\r\n");
for(const auto &ss : resutlList){
qInfo() << ss;
if(ss.contains("VirtualBox", Qt::CaseInsensitive))
return true;
}
return false;
}
VMMare如下:
//检测在VMWare虚拟机运行
bool IsInsideVMWare()
{
QProcess process;
process.start("wmic computersystem get Manufacturer, model");
process.waitForFinished();
QString strRest = process.readAllStandardOutput();
QStringList resutlList = strRest.split("\r\n");
for(const auto &ss : resutlList){
qInfo() << ss;
if(ss.contains("VMware", Qt::CaseInsensitive))
return true;
}
return false;
}