/WMIC

wmic 是一款获取PC电脑相关硬件信息的程序,目前支持 主板,硬盘,内存条,显卡,网卡等信息,使用 windows wmi com c++ 编写。

Primary LanguageC++

WMIC

wmic 是一款获取PC电脑相关硬件信息的程序,使用 wmi com c++ 编写。

目前可以获取以下硬件信息:

  • 显卡
  • 硬盘
  • 主板
  • 主板 bios 芯片
  • 内存条
  • CPU处理器
  • 网卡

以及以下软件信息:

  • 电脑系统

使用示例

#include <print>
#include "WMIC.h"

int main() {
    system("COLOR 0A");
    try {
        WMIC wmic;
        wmic.OperatingSystem();  // 系统
        wmic.VideoController();  // 显卡
        wmic.DiskDrive();        // 硬盘
        wmic.BaseBoard();        // 主板
        wmic.BIOS();             // 主板 BIOS 芯片
        wmic.PhysicalMemory();   // 内存条
        wmic.Processor();        // CPU处理器
        wmic.NetworkAdapter();   // 网卡

        // 以系统序列号为例,生成用户ID
        // 当然也可以任意特征组合形式进行用户ID生成
        auto meta = wmic.OperatingSystem().serialNumber;
        std::println("uid:{}", uid(std::vector<uint8_t>(meta.begin(), meta.end())));

    } catch(const WMICException &e) {
        std::println("{}",e.what());
	}
	return 0;
}

应用场景

硬件指纹 - 根据一系列的硬件特征信息生产一个唯一的指纹信息应用于 软件许可限制

获取用户电脑唯一ID

# 例如使用网卡地址生成唯一ID
mac_address = {0x00, 0xf1, 0xf3, 0x86, 0xc5, 0xaa}

id = 0
for v in mac_address:
    id = (id << 8) | v

id = id & 0x1fffffff

print("uid:", id)
# uid: 331712171

原理

https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page

编译

仅支持 windows 版本,使用 C++23 or 更高即可编译。

其他工具

window系统可以使用系统自带的工具(ComputerHardwareIds.exe)获取 硬件id