wmic,一个Windows下获取cpuID、主板ID、内存ID的工具
这几天在弄软件注册码的问题。发现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的工具相关推荐
- Windows下获取usb视频设备vendor id和product id的4种方法
之前在https://blog.csdn.net/fengbingchun/article/details/103507754 博文中介绍过如何在Linux获取usb视频设备的vendor id和pr ...
- python定时开关机的代码_用python写一个windows下的定时关机脚本(推荐)
由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习Python,于是决定用python写一个定时关机 ...
- c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
- Windows下获取视频设备的一种改进实现
之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法.其实那种实现方法是有缺陷 ...
- C++在windows下获取本地主机ipv4地址和ipv6地址的代码
把内容过程中经常用的内容段记录起来,下面内容段是关于C++在windows下获取本地主机ipv4地址和ipv6地址的内容,应该是对码农有所用处. #include <Winsock2.h> ...
- TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作
TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作 ...
- windows 下安装Chocolatey(强大的软件包管理工具)
在 Linux 下,大家喜欢用 apt-get 来安装应用程序,如今在 windows 下,大家可以使用 Chocolatey 来快速下载搭建一个开发环境. Chocolatey 的哲学就是完全用命令 ...
- Qt windows下获取CPU、主板、硬盘、网卡等相关信息
首先磁盘ID和磁盘序列号是不一样的,磁盘的一些相关信息可通过以下方式获取 查看步骤,右键我的电脑---->选择属性---->选择设备管理器---->展开磁盘驱动器 就可以看到磁 ...
- Linux下获取CPUID、硬盘序列号与MAC地址
ioctl系统调用,具体的调用方法,请查看手册页 获取CPUID 按照网上提供的说明,CPUID并不是所有的Intel CPU都支持的.如果支持,汇编调用为:eax置0000_0003,调用cpuid ...
最新文章
- Deployment
- 计算机无法识别华为m3,华为8寸M3(非青春版)电脑连接问题报告
- html照片与照片之间的间隔,css设置图片之间的间隔的方法
- cytoscape要求的JAVA版本_微生物研究必备:Cytoscape绘制网络图(一)
- fork和vfork,return和exit的理解
- Java虚拟机内存分配策略
- mybatis不等于某个字符串的值_MyBatis 的 4 个妙用,别再踩坑了!
- Spring Boot 学习之配置文件 application.yml
- 只学一门java可行吗,java可以作为第一门编程语言学习吗
- JAVA基础--继承(inheritance)
- InfoGAN学习笔记
- 和我一起打造个简单搜索之Logstash实时同步建立索引
- JavaScript 学习中
- Ribbit Developer Platform介绍。
- 焊接大师给您支招——10种焊接堵漏方法供你选
- 基于Matlab-gui信号系统设计
- 从安装过程品国产Linux操作系统的技术来源与异同之处
- CDN里面的一些名词你知道是什么意思吗?
- Proteus + μVision Keil单片机仿真教程(一)点亮一个LED
- 常见的几种身份验证方法