Qt 程序中获取 CPUID UUID 等系统信息的方法(win 平台,wmic)

最近的程序中要加入序列号注册的功能。这就需要获得电脑的一些基本信息,比如 UUID 、或者 CPUID 一类的固定的信息。

五一假期简单研究了一下,有了个初步的方案。利用windows 自带的 wmic 命令来获取这些信息。 首先说明,这种方法有个很大的缺点,就是慢,很慢。随便获得什么信息都要零点几秒的时间。另外这个方法不能跨平台,只对 win 平台适用。所以这种方法只是临时应应急,以后还要再研究研究更好的方法。

下面是代码,我封装到一个类里了。

#ifndef WMIC_H
#define WMIC_H#include <QString>/*** @brief The WMIC class 通过 wnic 命令获取电脑的一些基本信息*/
class WMIC
{public:static QString cpuName();static QString cpuId();static QString csUUID();static QString baseboardSN();static QString biosSN();static QString diskSN(int n);// n 是硬盘序号,从 0 开始private:WMIC() = delete;static QString result(QString cmd);
};#endif // WMIC_H
#include "wmic.h"
#include <QProcess>
#include <QDebug>QString WMIC::result(QString cmd)
{QProcess wmic;wmic.start(cmd);wmic.waitForFinished();wmic.readLine();QString ret = wmic.readLine().simplified();return ret;
}QString WMIC::cpuName()
{QString cmd = "wmic CPU get name";return result(cmd);
}QString WMIC::cpuId()
{QString cmd = "wmic CPU get processorid";return result(cmd);
}QString WMIC::csUUID()
{QString cmd = "wmic CSPRODUCT get uuid";return result(cmd);
}QString WMIC::baseboardSN()
{QString cmd = "wmic BASEBOARD get serialnumber";return result(cmd);
}QString WMIC::biosSN()
{QString cmd = "wmic BIOS get serialnumber";return result(cmd);
}QString WMIC::diskSN(int n)
{QString cmd = QString("wmic DISKDRIVE where index=%1 get serialnumber").arg(n);return result(cmd);
}

代码很简单,没什么值得多说的。有一个 C++11 的小技巧这里简单说两句。首先看下面的代码片段:

private:WMIC() = delete;

这个代码可以确保 WMIC 不能构造实例,因为构造函数 WMIC() 是 private 的,“= delete” 告诉编译器不要替我们生成 默认的构造函数。

Qt 程序中获取 CPUID UUID 等系统信息的方法(win 平台,wmic)相关推荐

  1. c中获取python控制台输出_linux c程序中获取shell脚本输出的实现方法

    [转]Linux Shell脚本调试技术 本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 ...

  2. c linux 获取cpuid_[C] 在GCC中获取CPUID信息(兼容VC)

    前面我们尝试过在VC中获取CPUID信息.现在再来试试GCC编译器. 一.调用CPUID指令 怎么调用CPUID指令呢?有三种办法-- 1. 用汇编语言编写一个cpuid函数,然后调整链接器配置,在C ...

  3. 应用笔记-Qt 程序中使用 Live 20R 指纹采集器

    应用笔记-Qt 程序中使用 Live 20R 指纹采集器 最近一个项目需要用到指纹认证.就在某东上随便搜了个销量比较大的指纹采集器,就是今天这个笔记的主角(Live 20R 指纹采集器).花了几天时间 ...

  4. [C] 在GCC中获取CPUID信息(兼容VC)

    作者:zyl910 前面我们尝试过在VC中获取CPUID信息.现在再来试试GCC编译器. 一.调用CPUID指令 怎么调用CPUID指令呢?有三种办法-- 1. 用汇编语言编写一个cpuid函数,然后 ...

  5. Silverlight:如何在程序中获取网站的根目录

    如果需要在Silverlight程序中获取当前网站的根目录,不能使用HttpContext.Current这样的方式,而需要用 @HostingEnvironment.ApplicationPhysi ...

  6. magento block 程序中获取各种url及绝对路径的方法

    magento block 程序中获取各种url的方法 Mage::getBaseUrl('media') //可获得 media 带 http 的url 地址.//同理也可以获得skin 和js 目 ...

  7. python中qt有哪些控件_使用PyQt5调用Qt程序,基础PythonQt控件的使用方法

    我们先看一段qt Python代码 from PyQt5.QtWidgets import QApplication, QLabel app = QApplication([]) label = QL ...

  8. QT界面中实现视频帧显示的多种方法及应用

    QT界面中实现视频帧显示的多种方法及应用 (一) 引言 1.1 视频帧在QT界面中的应用场景 1.2 不同方法的性能和适用性分析 1.2.1 使用QLabel和QPixmap 1.2.2 使用QPai ...

  9. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

最新文章

  1. mysql show processlist info null_关于查询mysql processlist的建议
  2. 4月书讯(上) | 这本书值得所有的等待
  3. scala mysql bit_Scala连接mysql数据库
  4. sql跨表查询_跨表查询经常有,何为跨表更新?
  5. 数据中心节能环保政策汇总分析:2022年新建大型数据中心PUE需达到1.4以下
  6. 2 Redis基本知识
  7. java解析xml转为Map
  8. OpenCV_04 几何变换:图像缩放+图像平移+图像旋转+仿射变换+透射变换+图像金字塔
  9. 除以13(信息学奥赛一本通-T1175)
  10. 在vsphere上迁移某台虚拟机的连锁步骤
  11. 项目现场如何通过安防网络设备的EHOME协议,把设备接入EasyCVR平台上进行互联网直播及分发?
  12. 加快二代支付系统建设
  13. Panoramic 控件设计举例
  14. 10019---访问远程Redis服务。Connect to Remote Redis Server
  15. 基于SSM框架实现的日记管理系统
  16. JS面向对象的三种写法
  17. 码农翻身之大话编程篇:8 TCP/IP之蓟辽督师
  18. python中import requests是什么意思_Ubuntu中python环境下import requests错误的解决(学习过程问题记录)...
  19. 电路的网孔电流法建模 matlab,第3节 网孔电流法
  20. 闪存,ROM,Nor Flash,NAND Flash

热门文章

  1. php文本首行缩进,html设置页面文本首行缩进
  2. 4【计算机编程】到底该学哪种编程语言?各种不同的编程语言现在都用来干嘛?
  3. 聚势赋能!全国跨境电商联合运营服务平台震撼发布
  4. 第十五章 TIM高级定时器(下)
  5. 哪些国家跟俄罗斯做生意最多?
  6. CGB2102-京淘项目day15
  7. 解决Mysql中longtext类型字段数据丢失问题
  8. 定点数与浮点数简单解释
  9. KEGG Drug 数据库
  10. [转]安装黑苹果卡在applekeystore starting