1. 程式人生 > 其它 >Qt獲取裝置資訊

Qt獲取裝置資訊

技術標籤:QtQt獲取裝置資訊Qt獲取硬碟IDQt獲取CPU id

Qt獲取裝置資訊

概述:

1.給大家分享個小案例,望日後開發上會對大家有所幫助;
2.使用Qt獲取當前PC的詳細資訊,例如:pc主機名、當前ip地址(ipv4)、cpu ID、當前使用ip的 MAC地址等等;
3.案例背景是要用於軟體授權加密使用;

程式碼示例:

.h:

#pragma once
#include <QString>

class GlobalApiClass
{

private:
	GlobalApiClass
(); ~GlobalApiClass(); public: static GlobalApiClass &GetInstance() { static GlobalApiClass instance; return instance; }; /* * @brief:獲取主機名稱 */ QString getUserName(); /* * @brief:獲取本機IP */ QString getAddIP(); /* * @brief:獲取本機MAC地址 */ QString getHostMacAddress(); /* * @brief:獲取硬碟 */
QString getDiskdrive(); /* * @brief:獲取本機IP地址 */ QString getCpuID(); };

.cpp:

#include "GlobalApiClass.h"
#include <QProcess>
#include <QtNetWork/QHostInfo>
#include <QtNetWork/QHostAddress>
#include <QtNetWork/QNetworkInterface>

GlobalApiClass::GlobalApiClass()
{
} GlobalApiClass::~GlobalApiClass() { } QString GlobalApiClass::getUserName() { return QHostInfo::localHostName(); } QString GlobalApiClass::getAddIP() { QList<QHostAddress> list = QNetworkInterface::allAddresses(); foreach(QHostAddress address, list) { if (address.protocol() == QAbstractSocket::IPv4Protocol) //我們使用IPv4地址 return address.toString(); } return 0; } QString GlobalApiClass::getHostMacAddress() { QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 獲取所有網路介面列表 int nCnt = nets.count(); QString strMacAddr = ""; for (int i = 0; i < nCnt; i++) { // 如果此網路介面被啟用並且正在執行並且不是迴環地址,則就是我們需要找的Mac地址 if (nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack)) { strMacAddr = nets[i].hardwareAddress(); break; } } return strMacAddr; } QString GlobalApiClass::getDiskdrive() { QProcess p(0); p.start("wmic diskdrive get serialnumber"); p.waitForStarted(); p.waitForFinished(); QString result = QString::fromLocal8Bit(p.readAllStandardOutput()); QStringList list = result.split("\r\n"); if (list.size() < 1) return "error"; return list.at(1).trimmed(); } QString GlobalApiClass::getCpuID() { QString cpu_id = ""; QProcess p(0); p.start("wmic CPU get ProcessorID"); p.waitForStarted(); p.waitForFinished(); cpu_id = QString::fromLocal8Bit(p.readAllStandardOutput()); cpu_id = cpu_id.remove("ProcessorId").trimmed(); return cpu_id; }

列印輸出:

	qDebug() <<QString::fromLocal8Bit("主機名:") << GlobalApiClass::GetInstance().getUserName();
	qDebug() << QString::fromLocal8Bit("IP:")<< GlobalApiClass::GetInstance().getAddIP();
	qDebug() << QString::fromLocal8Bit("硬碟ID:")<< GlobalApiClass::GetInstance().getDiskdrive();
	qDebug() << QString::fromLocal8Bit("Mac地址:")<< GlobalApiClass::GetInstance().getHostMacAddress();
	qDebug() << QString::fromLocal8Bit("cpu ID:")<< GlobalApiClass::GetInstance().getCpuID();

"主機名:" "RD-04"
"IP:" "192.168.1.1"
"硬碟ID:" "ZN18JXN8"
"Mac地址:" "C4:66:16:3A:09:56"
"cpu ID:" "BFEBFBFF000908ED"

拓展:

 	//獲取cpu名稱:wmic cpu get Name
    //獲取cpu核心數:wmic cpu get NumberOfCores
    //獲取cpu執行緒數:wmic cpu get NumberOfLogicalProcessors
    //查詢cpu序列號:wmic cpu get processorid
    //查詢主機板序列號:wmic baseboard get serialnumber
    //查詢BIOS序列號:wmic bios get serialnumber
    //檢視硬碟:wmic diskdrive get serialnumber

over:

歡迎大家關注作者在文末評論、點贊、轉發以及批評指正!
如果大家有更好的方法或有問題可以在文末評論一起討論!
共同學習!
共同進步!

文末一句話:

不論榮辱,不論悲歡,皆是過往,多說無益,多想傷身。
共勉!