• 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运行效果:

    dos窗口运行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"

    三、软件运行效果

    四、核心代码

    4.1 widget.h

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. QT_BEGIN_NAMESPACE
    8. namespace Ui { class Widget; }
    9. QT_END_NAMESPACE
    10. class Widget : public QWidget
    11. {
    12. Q_OBJECT
    13. public:
    14. Widget(QWidget *parent = nullptr);
    15. ~Widget();
    16. QString getWMIC(const QString &cmd);
    17. QString getCpuName();
    18. QString getCpuId();
    19. QString getBaseboardNum();
    20. QString getBiosNum();
    21. QString getDiskNum();
    22. private slots:
    23. void on_pushButton_get_clicked();
    24. private:
    25. Ui::Widget *ui;
    26. };
    27. #endif // WIDGET_H

    4.2 widget.cpp

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. /*
    4. 功能: 获取CPU名称
    5. */
    6. QString Widget::getCpuName()
    7. {
    8. QString cmd="wmic cpu get name";
    9. QProcess p;
    10. p.start(cmd);
    11. p.waitForFinished();
    12. QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    13. QStringList list = cmd.split(" ");
    14. result = result.remove(list.last(), Qt::CaseInsensitive);
    15. result = result.replace("\r", "");
    16. result = result.replace("\n", "");
    17. result = result.simplified();
    18. return result;
    19. }
    20. /*
    21. 功能: 获取CPU的ID
    22. */
    23. QString Widget::getCpuId()
    24. {
    25. QString cmd="wmic cpu get processorid";
    26. QProcess p;
    27. p.start(cmd);
    28. p.waitForFinished();
    29. QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    30. QStringList list = cmd.split(" ");
    31. result = result.remove(list.last(), Qt::CaseInsensitive);
    32. result = result.replace("\r", "");
    33. result = result.replace("\n", "");
    34. result = result.simplified();
    35. return result;
    36. }
    37. /*
    38. 功能: 查询主板序号
    39. */
    40. QString Widget::getBaseboardNum()
    41. {
    42. QString cmd="wmic baseboard get serialnumber";
    43. QProcess p;
    44. p.start(cmd);
    45. p.waitForFinished();
    46. QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    47. QStringList list = cmd.split(" ");
    48. result = result.remove(list.last(), Qt::CaseInsensitive);
    49. result = result.replace("\r", "");
    50. result = result.replace("\n", "");
    51. result = result.simplified();
    52. return result;
    53. }
    54. /*
    55. 功能: 查询BIOS序号
    56. */
    57. QString Widget::getBiosNum()
    58. {
    59. QString cmd="wmic bios get serialnumber";
    60. QProcess p;
    61. p.start(cmd);
    62. p.waitForFinished();
    63. QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    64. QStringList list = cmd.split(" ");
    65. result = result.remove(list.last(), Qt::CaseInsensitive);
    66. result = result.replace("\r", "");
    67. result = result.replace("\n", "");
    68. result = result.simplified();
    69. return result;
    70. }
    71. /*
    72. 功能: 查询硬盘序号
    73. */
    74. QString Widget::getDiskNum()
    75. {
    76. QString cmd="wmic diskdrive where index=0 get serialnumber";
    77. QProcess p;
    78. p.start(cmd);
    79. p.waitForFinished();
    80. QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    81. QStringList list = cmd.split(" ");
    82. result = result.remove(list.last(), Qt::CaseInsensitive);
    83. result = result.replace("\r", "");
    84. result = result.replace("\n", "");
    85. result = result.simplified();
    86. return result;
    87. }
    88. Widget::Widget(QWidget *parent)
    89. : QWidget(parent)
    90. , ui(new Ui::Widget)
    91. {
    92. ui->setupUi(this);
    93. this->setWindowTitle("获取CPU信息");
    94. }
    95. Widget::~Widget()
    96. {
    97. delete ui;
    98. }
    99. /*
    100. 功能: 获取数据
    101. */
    102. void Widget::on_pushButton_get_clicked()
    103. {
    104. ui->lineEdit_cpu->setText(getCpuId());
    105. ui->lineEdit_bord->setText(getBaseboardNum());
    106. ui->lineEdit_cpu_name->setText(getCpuName());
    107. ui->lineEdit_bios->setText(getBiosNum());
    108. ui->lineEdit_disk->setText(getDiskNum());
    109. }

     

    4.3 ui界面

     

  • 相关阅读:
    常见的内置函数、可迭代对象、迭代器对象、异常捕获、异常捕获的用途、生成器对象、模块、绝对导入与相对导入、包的概念、模块
    (附源码)计算机毕业设计SSM基于的冠状病毒疫情防控资讯交流推荐网站
    THREE--demo8(文字)
    e6.利用 docker 快速部署自动化运维平台
    [moeCTF 2023] REV
    合并RAR分卷压缩包
    Unity3D简陋版跑酷游戏
    git学习笔记
    java面向对象(九)
    数据结构初阶——堆
  • 原文地址:https://blog.csdn.net/lvwenshuai/article/details/130890304