C++获取电脑主板唯一标识
获取电脑的唯一标识有很多好处,比如注册、授权等,而且电脑中有很多是唯一标识的硬件,比如网卡、CPU、硬盘、主板等。但是如果电脑中有两个网卡的话,就不知道使用哪个网卡作为唯一的了。可以通过获取主板的ID,作为唯一的标识。
通常情况下,可以通过命令行来获取主板ID:
wmic csproduct get uuid
获取CPU的标识符:
wmic cpu get processorid
获取硬盘序列号:
wmic diskdrive get serialnumber
具体操作如下:
如何通过C++代码来获取BOIS的标识符呢?
#include <string>
#include <windows.h>BOOL getBoisIDByCmd(char *lpszBaseBoard) {const long MAX_COMMAND_SIZE = 10000; // 命令行输出缓冲大小 WCHAR szFetCmd[] = L"wmic csproduct get UUID"; // 获取BOIS命令行 const string strEnSearch = "UUID"; // 主板序列号的前导信息BOOL bret = FALSE;HANDLE hReadPipe = NULL; //读取管道HANDLE hWritePipe = NULL; //写入管道 PROCESS_INFORMATION pi; //进程信息 memset(&pi, 0, sizeof(pi));STARTUPINFO si; //控制命令行窗口信息memset(&si, 0, sizeof(si));SECURITY_ATTRIBUTES sa; //安全属性memset(&sa, 0, sizeof(sa));char szBuffer[MAX_COMMAND_SIZE + 1] = { 0 }; // 放置命令行结果的输出缓冲区string strBuffer;unsigned long count = 0;long ipos = 0;pi.hProcess = NULL;pi.hThread = NULL;si.cb = sizeof(STARTUPINFO);sa.nLength = sizeof(SECURITY_ATTRIBUTES);sa.lpSecurityDescriptor = NULL;sa.bInheritHandle = TRUE;//1.创建管道bret = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0);if (!bret) {CloseHandle(hWritePipe);CloseHandle(hReadPipe);return bret;}//2.设置命令行窗口的信息为指定的读写管道GetStartupInfo(&si);si.hStdError = hWritePipe;si.hStdOutput = hWritePipe;si.wShowWindow = SW_HIDE; //隐藏命令行窗口si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;//3.创建获取命令行的进程bret = CreateProcess(NULL, szFetCmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);if (!bret) {CloseHandle(hWritePipe);CloseHandle(hReadPipe);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return bret;}//4.读取返回的数据WaitForSingleObject(pi.hProcess, 200);bret = ReadFile(hReadPipe, szBuffer, MAX_COMMAND_SIZE, &count, 0);if (!bret) {CloseHandle(hWritePipe);CloseHandle(hReadPipe);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return bret;}//5.查找主板IDbret = FALSE;strBuffer = szBuffer;ipos = strBuffer.find(strEnSearch);if (ipos < 0){ // 没有找到CloseHandle(hWritePipe);CloseHandle(hReadPipe);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return bret;} else {strBuffer = strBuffer.substr(ipos + strEnSearch.length());}memset(szBuffer, 0x00, sizeof(szBuffer));strcpy_s(szBuffer, strBuffer.c_str());//去掉中间的空格 \r \nint j = 0;for (int i = 0; i < strlen(szBuffer); i++) {if (szBuffer[i] != ' ' && szBuffer[i] != '\n' && szBuffer[i] != '\r') {lpszBaseBoard[j] = szBuffer[i];j++;}}CloseHandle(hWritePipe);CloseHandle(hReadPipe);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return TRUE;
}
C++获取电脑主板唯一标识相关推荐
- Vue获取浏览器唯一标识
`登陆时候可能需要向后台传输一个唯一标识符 具体实现思路如下: 1.引入js <!-- 获取唯一标识 --> <script type="text/javascript&q ...
- Windows获取系统唯一标识UUID
Windows获取系统唯一标识UUID (也叫CSP UUID) 命令行 wmic csproduct get uuid C/C++ 使用CoCreateGuid函数,可以参考官方:https:// ...
- 获取android设备唯一编号_android获取设备唯一标识完美解决方案的思考以及实现方式...
关于Android设备唯一标识符号 前言 由于在开发中需要开发游客模式,在用户没有登录的情况下必须确保设备的唯一性,于是惯性思维想到的肯定是使用DevicesId 来作为设备的唯一标识,用以代替用户登 ...
- 获取电脑唯一标识,硬盘序列号,主板序列号,CPU序列号
在生产环境中,有时候会需要获取电脑唯一标识进行程序管理验证,比如一个程序,在A电脑上面只能允许正常登陆一年,到期后提示联系管理员等情况.就是获取电脑唯一标识后将该值存入授权数据库,默认给当前电脑的使用 ...
- Android 手机上获取物理唯一标识码
唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. 本文转自:http://blog.csdn.net/zhang31jian/article/details/23787037 imp ...
- swift获取openuuid_iOS获取设备唯一标识:UDID、IDFA、IDFV、OpenIDFA、SimulateIDFA等.
1. UDID UDID全称是Unique Device Identifier,顾名思义,它就是苹果iOS设备的唯一标识码,它由40个字符的字母和数字组成.在很多需要限制一台设备一个张红的应用中经常会 ...
- 跨平台应用开发进阶(六十):uniapp 获取设备唯一标识信息
文章目录 一.前言 二.其他方案 2.1 调用原生 2.2 插件调用 2.2.1 Ba-IdCode 2.2.2 KeyChain 三.实施方案 四.拓展阅读 一.前言 应App个人信息保护与安全要求 ...
- android获取设备唯一标识完美解决方案
转自:https://blog.csdn.net/aa1733519509/article/details/50053553 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码. ...
- Android 设备获取物理唯一标识码
唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure; private String android_id ...
最新文章
- dataframe,python,numpy 问题索引2
- 昆虫大脑帮助AI解决导航难题
- 2013年蓝桥杯省赛C/C++A组真题解析
- 实例40:python
- Java多线程的使用
- CSS3响应式bootstrap模板
- 推特大规模攻击幕后黑手竟是 17 岁少年?企业云安全迫在眉睫!
- 评论.gitignore?
- mfc中窗口大小适合图片大小
- nginx.conf 配置详解
- Part I. S1. 模糊集及其运算
- 加什么地形就看什么等高线!等高线实时预览就是这么爽
- 基于I2C协议的AHT20温湿度传感器的数据采集及OLED屏显示
- python 对称加密_常见加密方式及Python实现
- [Mitchell 机器学习读书笔记]——人工神经网络
- 『ML笔记』梯度下降法和随机梯度下降法和小批量梯度对比
- 计算机考试C1-1随笔
- Ecshop屏幕wap
- 关于AES:加密方式,让你的APK无懈可击,字节跳动Android面试全套真题解析在互联网火了
- 什么是操作系统?操作系统的主要特性是什么?主要功能是什么?
热门文章
- pmos低电平驱动_MOS管驱动电路总结
- 判断点圆关系 (30 分)
- 南京邮电大学操作系统实验五:Windows平台多进程共享内存通信
- 7-24 到底是不是太胖了 (10分)
- 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
- FS8205A低压20V N 沟道增强型 MOS 场效应管
- WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
- 赛宝-亿能软件测试技术沙龙第1期 – 性能测试工程师职业规划与成长之路
- NI multism 设计单脉冲发生器实验报告
- Leetcode题库1823. 找出游戏的获胜者(约瑟夫环 C实现)