这几天在弄软件注册码的问题。发现windows自带一个很好用的命令行工具wmic,可以查询各种设备的序列号。
https://blog.csdn.net/discover2210212455/article/details/82711930
https://blog.csdn.net/u012156872/article/details/103733290

有了这个,代码量可以少很多。

参考:
https://www.52pojie.cn/thread-744248-1-1.html?fallback=1
https://bbs.csdn.net/topics/392161316
在获取主板ID时,最好使用:

wmic csproduct get uuid

加一个哈希值的计算方式
https://www.cnblogs.com/anjou/archive/2008/12/31/1366011.html
我修改成了用string类型的:

// 计算Hash,成功返回0,失败返回GetLastError()
//  CONST BYTE *pbData, // 输入数据
//  DWORD dwDataLen,     // 输入数据字节长度
//  ALG_ID algId              // Hash 算法:CALG_MD5,CALG_SHA
//  string* outStr,        // 输出16进制Hash字符串,MD5长度为32+1, SHA长度为40+1
//
DWORD GetHash(CONST BYTE *pbData, DWORD dwDataLen, ALG_ID algId, string* outStr)
{DWORD dwReturn = 0;HCRYPTPROV hProv;if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))return (dwReturn = GetLastError());HCRYPTHASH hHash;//Alg Id:CALG_MD5,CALG_SHAif (!CryptCreateHash(hProv, algId, 0, 0, &hHash)){dwReturn = GetLastError();CryptReleaseContext(hProv, 0);return dwReturn;}if (!CryptHashData(hHash, pbData, dwDataLen, 0)){dwReturn = GetLastError();CryptDestroyHash(hHash);CryptReleaseContext(hProv, 0);return dwReturn;}DWORD dwSize;DWORD dwLen = sizeof(dwSize);CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE*)(&dwSize), &dwLen, 0);BYTE* pHash = new BYTE[dwSize];dwLen = dwSize;CryptGetHashParam(hHash, HP_HASHVAL, pHash, &dwLen, 0);for (DWORD i = 0; i < dwLen; ++i){char strTemp[3] = { 0 };sprintf_s(strTemp, "%02X", pHash[i]);*outStr += strTemp;}delete[] pHash;CryptDestroyHash(hHash);CryptReleaseContext(hProv, 0);return dwReturn;
}//用法
string hwID = "123";
printf("hwID:%s\r\n", hwID.data());string hashStr;
GetHash((BYTE*)hwID.data(), hwID.length(), CALG_MD5, &hashStr);

wmic,一个Windows下获取cpuID、主板ID、内存ID的工具相关推荐

  1. Windows下获取usb视频设备vendor id和product id的4种方法

    之前在https://blog.csdn.net/fengbingchun/article/details/103507754 博文中介绍过如何在Linux获取usb视频设备的vendor id和pr ...

  2. python定时开关机的代码_用python写一个windows下的定时关机脚本(推荐)

    由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习Python,于是决定用python写一个定时关机 ...

  3. c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  4. Windows下获取视频设备的一种改进实现

    之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法.其实那种实现方法是有缺陷 ...

  5. C++在windows下获取本地主机ipv4地址和ipv6地址的代码

    把内容过程中经常用的内容段记录起来,下面内容段是关于C++在windows下获取本地主机ipv4地址和ipv6地址的内容,应该是对码农有所用处. #include <Winsock2.h> ...

  6. TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作

    TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作 ...

  7. windows 下安装Chocolatey(强大的软件包管理工具)

    在 Linux 下,大家喜欢用 apt-get 来安装应用程序,如今在 windows 下,大家可以使用 Chocolatey 来快速下载搭建一个开发环境. Chocolatey 的哲学就是完全用命令 ...

  8. Qt windows下获取CPU、主板、硬盘、网卡等相关信息

    首先磁盘ID和磁盘序列号是不一样的,磁盘的一些相关信息可通过以下方式获取 查看步骤,右键我的电脑---->选择属性---->选择设备管理器---->展开磁盘驱动器    就可以看到磁 ...

  9. Linux下获取CPUID、硬盘序列号与MAC地址

    ioctl系统调用,具体的调用方法,请查看手册页 获取CPUID 按照网上提供的说明,CPUID并不是所有的Intel CPU都支持的.如果支持,汇编调用为:eax置0000_0003,调用cpuid ...

最新文章

  1. Deployment
  2. 计算机无法识别华为m3,华为8寸M3(非青春版)电脑连接问题报告
  3. html照片与照片之间的间隔,css设置图片之间的间隔的方法
  4. cytoscape要求的JAVA版本_微生物研究必备:Cytoscape绘制网络图(一)
  5. fork和vfork,return和exit的理解
  6. Java虚拟机内存分配策略
  7. mybatis不等于某个字符串的值_MyBatis 的 4 个妙用,别再踩坑了!
  8. Spring Boot 学习之配置文件 application.yml
  9. 只学一门java可行吗,java可以作为第一门编程语言学习吗
  10. JAVA基础--继承(inheritance)
  11. InfoGAN学习笔记
  12. 和我一起打造个简单搜索之Logstash实时同步建立索引
  13. JavaScript 学习中
  14. Ribbit Developer Platform介绍。
  15. 焊接大师给您支招——10种焊接堵漏方法供你选
  16. 基于Matlab-gui信号系统设计
  17. 从安装过程品国产Linux操作系统的技术来源与异同之处
  18. CDN里面的一些名词你知道是什么意思吗?
  19. Proteus + μVision Keil单片机仿真教程(一)点亮一个LED
  20. 常见的几种身份验证方法

热门文章

  1. Flutter 相对位置组件Positioned
  2. 前后端分离解析(1)前端与后端
  3. 分享 14 个你必须知道的 JS 函数
  4. python微信小程序爬虫_Python爬取微信小程序实战(通用)
  5. 如何做一个网站来赚钱盈利!
  6. js压缩base64图片的方法
  7. 为什么可以这样写 Collection coll = new ArrayList();
  8. iOS-基础-数据类型
  9. vue+窗格切换+田字+dicom显示_03
  10. Linux的libc库