Qt-获取计算机信息(MACIPCPU主机名等等)
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt-获取计算机信息(MACIPCPU主机名等等)相关的知识,希望对你有一定的参考价值。
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
简介
在我们开发软件时,会经常需要用到计算机的相关信息,基于这些信息,我们可以开发一些辅助模块。本文将分享几个可以应用在Qt中的常用函数,帮助大家更便捷地获取如下计算机信息。
- 主机名。
- CPU。
- MAC地址。
- IP地址。
- CPU核心数。
- CPU线程数(逻辑处理器)。
- 处理器ID。
- 主板序列号。
- Bios序列号。
- 硬盘驱动器序列号。
主机名
// 获取计算机名称
QString Registration::GetMachineName()
// 获取主机名
QString machineName = QHostInfo::localHostName();
return machineName;
CPU
// 获取CPU信息
QString Registration::GetCPU()
// 获取CPU注册表地址
QSettings cpu("HKEY_LOCAL_MACHINE\\\\HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0", QSettings::NativeFormat);
// 提取CPU信息
QString m_cpu = cpu.value("ProcessorNameString").toString();
return m_cpu;
MAC地址
// 获取MAC地址
QString Registration::GetMac()
// 获取所有网络接口列表
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();
// 遍历接口
int nCnt = nets.count();
QString strMacAddr = "";
for(int i = 0; i < nCnt; i++)
// 网络接口需被激活且正在运行且不是回环地址,才可能是要找的地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) &&
nets[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
// 该mac的ip地址不能是回环地址并且是ipv4地址
for(int j = 0; j < nets[i].addressEntries().size(); j++)
if(nets[i].addressEntries().at(j).ip() != QHostAddress::LocalHost &&
nets[i].addressEntries().at(j).ip().protocol() == QAbstractSocket::IPv4Protocol)
strMacAddr = nets[i].hardwareAddress();
return strMacAddr;
IP地址
// 获取IP地址
QString Registration::GetIP()
// 获取所有网络接口列表
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();
// 遍历接口
int nCnt = nets.count();
QString strIpAddr = "";
for(int i = 0; i < nCnt; i++)
// // 网络接口需被激活且正在运行且不是回环地址,才可能是要找的地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) &&
nets[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
// 该mac的ip地址不能是回环地址并且是ipv4地址
for(int j = 0; j < nets[i].addressEntries().size(); j++)
if(nets[i].addressEntries().at(j).ip() != QHostAddress::LocalHost &&
nets[i].addressEntries().at(j).ip().protocol() == QAbstractSocket::IPv4Protocol)
strIpAddr=nets[i].addressEntries().at(j).ip().toString();
return strIpAddr;
获取wmic指令结果
// 获取WMIC指令结果
QString Registration::GetWMICInfo(QString cmd)
// cmd指令
QProcess Cmd;
Cmd.start(cmd);
Cmd.waitForFinished();
// 获取输出结果
QString result = QString::fromLocal8Bit(Cmd.readAllStandardOutput());
// 拆分指令字符串
QStringList list = cmd.split(" ");
// 指令字符串的最后一个单词提取出来作匹配,匹配成功则在result中删除
// 如:wmic cpu get processorid,那么list.last()就是processorid
// Qt::CaseInsensitive表示无视大小写,Qt::CaseSensitive表示对大小写敏感
result = result.remove(list.last(), Qt::CaseInsensitive);
// 删除输出结果中的回车和换行
result = result.replace("\\r", "");
result = result.replace("\\n", "");
// 去除空格操作
result = result.simplified();
return result;
CPU核心数
通过wmic指令获取。
// 获取CPU核心数
QString Registration::GetCPUNumberOfCores()
QString cmd = QString("wmic cpu get NumberOfCores");
return GetWMICInfo(cmd);
CPU线程数
通过wmic指令获取。
// 获取CPU线程数
QString Registration::GetCPUNumberOfLogicalProcessors()
QString cmd = QString("wmic cpu get NumberOfLogicalProcessors");
return GetWMICInfo(cmd);
处理器ID
通过wmic指令获取。
// 获取CPU处理器ID
QString Registration::GetCPUProcessorid()
QString cmd = QString("wmic cpu get processorid");
return GetWMICInfo(cmd);
主板序列号
通过wmic指令获取。
// 获取主板序列号
QString Registration::GetBaseboardSerialnumber()
QString cmd = QString("wmic baseboard get serialnumber");
return GetWMICInfo(cmd);
BIOS序列号
通过wmic指令获取。
// 获取BIOS序列号
QString Registration::GetBIOSSerialnumber()
QString cmd = QString("wmic bios get serialnumber");
return GetWMICInfo(cmd);
硬盘驱动器序列号
通过wmic指令获取。
// 获取硬盘驱动器序列号
QString Registration::GetDiskdriveSerialnumber()
QString cmd = QString("wmic diskdrive get serialnumber");
return GetWMICInfo(cmd);
效果图
以上是关于Qt-获取计算机信息(MACIPCPU主机名等等)的主要内容,如果未能解决你的问题,请参考以下文章