QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

这篇具有很好参考价值的文章主要介绍了QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、环境介绍

QT版本:  5.12.6

环境: win10 64位

编译器: MinGW 32

二、功能介绍

通过wmic 命令获取CPU序列号、硬盘序列号、主板序列号、CPU名称等信息。

做软件加密、数据加密、软件1机1码绑定的场合比较实用。

WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批命令脚本执行系统管理的支持。

wmic 命令很强大,在win10上系统上wmic命令被powershell的“ help Get-WmiObject  ”代替,但是wmic 命令还是正常可以使用的。

这是powershell运行效果:

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

dos窗口运行wmic命令效果:

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

wmic 常用的命令介绍:

获取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 where index=0 get serialnumber
查看cpu详细信息: wmic cpu list brief
查看物理内存: wmic memphysical list brief
查看逻辑内存: wmic memlogical list brief
查看缓存内存: wmic memcache list brief 
查看虚拟内存: wmic pagefile list brief
查看网卡: wmic nic list brief
关闭本地计算机: wmic process call create shutdown.exe
获取进程名称以及可执行路径: wmic process get name,executablepath

删除指定进程(根据进程名称):
wmic process where name="qq.exe" call terminate
或者用
wmic process where name="qq.exe" delete

删除指定进程(根据进程PID): wmic process where pid="123" delete
创建新进程: wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"

三、软件运行效果

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

四、核心代码

4.1 widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QProcess>
#include <windows.h>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    QString getWMIC(const QString &cmd);
    QString getCpuName();
    QString getCpuId();
    QString getBaseboardNum();
    QString getBiosNum();
    QString getDiskNum();
private slots:
    void on_pushButton_get_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
 

4.2 widget.cpp

#include "widget.h"
#include "ui_widget.h"

/*
功能: 获取CPU名称
*/
QString Widget::getCpuName()
{
    QString cmd="wmic cpu get name";
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}

/*
功能: 获取CPU的ID
*/
QString Widget::getCpuId()
{
    QString cmd="wmic cpu get processorid";
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}

/*
功能: 查询主板序号
*/
QString Widget::getBaseboardNum()
{
    QString cmd="wmic baseboard get serialnumber";
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}

/*
功能: 查询BIOS序号
*/
QString Widget::getBiosNum()
{
    QString cmd="wmic bios get serialnumber";
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}

/*
功能: 查询硬盘序号
*/
QString Widget::getDiskNum()
{
    QString cmd="wmic diskdrive where index=0 get serialnumber";
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("获取CPU信息");
}


Widget::~Widget()
{
    delete ui;
}

/*
功能: 获取数据
*/
void Widget::on_pushButton_get_clicked()
{
    ui->lineEdit_cpu->setText(getCpuId());
    ui->lineEdit_bord->setText(getBaseboardNum());
    ui->lineEdit_cpu_name->setText(getCpuName());
    ui->lineEdit_bios->setText(getBiosNum());
    ui->lineEdit_disk->setText(getDiskNum());
}

 文章来源地址https://www.toymoban.com/news/detail-469750.html

4.3 ui界面

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

 

到了这里,关于QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android设备序列号:如何获取和查找您的Android设备的序列号

    Android设备序列号:如何获取和查找您的Android设备的序列号 在使用Android设备时,有时候需要查找设备的序列号来进行诊断、维修或者进行其他操作。本文将介绍如何获取和查找Android设备的序列号,并提供相应的源代码示例。 Android设备的序列号是一个唯一的标识符,用于区分

    2024年02月07日
    浏览(56)
  • java获取linux和window序列号

    获取系统序列号在Java中并不是一个直接支持的功能,因为Java语言本身并不提供直接访问硬件级别的信息,如CPU序列号。但是,我们可以使用一些平台特定的工具或命令来实现这一功能。下面我将展示如何使用Java获取Windows和Linux系统上的CPU序列号、磁盘、mac地址等信息,及使

    2024年01月24日
    浏览(60)
  • Android 12.0默认授予app获取序列号SerialNo权限

    在12.0的系统rom定制化中,在一些第三方app开发中,会获取序列号等属性,而在10.0以后的高版本对于获取系统属性的相关信息要求严格 必须有权限才可以,10.0以前的Android版本中,可以直接通过调用Build.SERIAL来获取序列号,在高版本中,为了保护个人隐私, 不让第三方应用轻

    2024年02月07日
    浏览(92)
  • 如何查询iPhone手机的序列号?苹果序列号查询方法

    iPhone序列号不仅可以查询设备的基本信息,包括生产日期、生产厂家、颜色、内存大小、版本等; 还可以用来验证设备真伪、查询激活日期、保修情况、是否开启查找我的功能等。 那么,如何查询iPhone手机的序列号呢?今天小编就给大家介绍怎么查询苹果序列号,有需要的

    2024年02月05日
    浏览(66)
  • OllyDbg 使用 快捷键 界面 实战:修改数据 修改代码 获取正确序列号,重要数据等 跳过关键验证 改试用期 解锁限制的功能 安防安全行业基础

    1、按住F8直到 找到位置 (弹出一个MessageBox窗口) 2、再次,进入到位置里, 找到要改的值 3、修改值(根据数据地址,到数据面板 按下Ctrl+G 输入 地址 鼠标选中要改的地方,按下空格键输入要改动字符。) 4、永久保存(选中改过的部分–右键选择复制到可执行程序–备份

    2024年02月21日
    浏览(44)
  • 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

    现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器

    2024年02月03日
    浏览(70)
  • 显示器序列号查询方式

    序列号位置 :位于显示器背部下方凹槽内 显示 S/N 或 序号 字段,可参考本文最下方图片 方式一:人工输入 方式二:微信提取文字,步骤如下 序列号拍照发送到自己微信长按图片提取文字(iPhone有概率没有这个选项,没有的话重拍只包含S/N的清晰照片或用安卓版微信尝试或

    2024年02月11日
    浏览(57)
  • Linux:TCP 序列号简介

    限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 TCP 序列号 ,是为 TCP 协议通信数据中的每一个字节赋予一个唯一编号,其作用可以概括如下: 一图胜千言,还是上一张图来直观感受下: 上图是 TCP 协议数据头部,红框中的部分: 序号

    2024年02月02日
    浏览(60)
  • 查找mac硬盘序列号的方法

    需要查找macbook pro的硬盘序列号信息,找了好几个帖子,发现都不见效,需要花费时间找的东西都有必要记录下来,防止下次重复浪费时间。 macbook pro macos版本: 根据百度提供的方法,并不能得到相应的效果,原因如下: 不知道是不是最新更新了mac os系统的原因,找不到系统

    2024年02月06日
    浏览(53)
  • 【Mysql】给查询记录增加序列号方法

    在MySQL 8.0版本中,你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询,演示如何添加序号: 请将column_name替换为你想要按照哪一列排序的列名。还可以添加其他需要的列,以在结果中显示它们。 这个查询将返回一个名为serial_number的新列,其中包含每行的序号。序号

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包