获取电脑的唯一标识有很多好处,比如注册、授权等,而且电脑中有很多是唯一标识的硬件,比如网卡、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++获取电脑主板唯一标识相关推荐

  1. Vue获取浏览器唯一标识

    `登陆时候可能需要向后台传输一个唯一标识符 具体实现思路如下: 1.引入js <!-- 获取唯一标识 --> <script type="text/javascript&q ...

  2. Windows获取系统唯一标识UUID

    Windows获取系统唯一标识UUID  (也叫CSP UUID) 命令行 wmic csproduct get uuid C/C++ 使用CoCreateGuid函数,可以参考官方:https:// ...

  3. 获取android设备唯一编号_android获取设备唯一标识完美解决方案的思考以及实现方式...

    关于Android设备唯一标识符号 前言 由于在开发中需要开发游客模式,在用户没有登录的情况下必须确保设备的唯一性,于是惯性思维想到的肯定是使用DevicesId 来作为设备的唯一标识,用以代替用户登 ...

  4. 获取电脑唯一标识,硬盘序列号,主板序列号,CPU序列号

    在生产环境中,有时候会需要获取电脑唯一标识进行程序管理验证,比如一个程序,在A电脑上面只能允许正常登陆一年,到期后提示联系管理员等情况.就是获取电脑唯一标识后将该值存入授权数据库,默认给当前电脑的使用 ...

  5. Android 手机上获取物理唯一标识码

    唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. 本文转自:http://blog.csdn.net/zhang31jian/article/details/23787037 imp ...

  6. swift获取openuuid_iOS获取设备唯一标识:UDID、IDFA、IDFV、OpenIDFA、SimulateIDFA等.

    1. UDID UDID全称是Unique Device Identifier,顾名思义,它就是苹果iOS设备的唯一标识码,它由40个字符的字母和数字组成.在很多需要限制一台设备一个张红的应用中经常会 ...

  7. 跨平台应用开发进阶(六十):uniapp 获取设备唯一标识信息

    文章目录 一.前言 二.其他方案 2.1 调用原生 2.2 插件调用 2.2.1 Ba-IdCode 2.2.2 KeyChain 三.实施方案 四.拓展阅读 一.前言 应App个人信息保护与安全要求 ...

  8. android获取设备唯一标识完美解决方案

    转自:https://blog.csdn.net/aa1733519509/article/details/50053553 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码. ...

  9. Android 设备获取物理唯一标识码

    唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure; private String android_id ...

最新文章

  1. dataframe,python,numpy 问题索引2
  2. 昆虫大脑帮助AI解决导航难题
  3. 2013年蓝桥杯省赛C/C++A组真题解析
  4. 实例40:python
  5. Java多线程的使用
  6. CSS3响应式bootstrap模板
  7. 推特大规模攻击幕后黑手竟是 17 岁少年?企业云安全迫在眉睫!
  8. 评论.gitignore?
  9. mfc中窗口大小适合图片大小
  10. nginx.conf 配置详解
  11. Part I. S1. 模糊集及其运算
  12. 加什么地形就看什么等高线!等高线实时预览就是这么爽
  13. 基于I2C协议的AHT20温湿度传感器的数据采集及OLED屏显示
  14. python 对称加密_常见加密方式及Python实现
  15. [Mitchell 机器学习读书笔记]——人工神经网络
  16. 『ML笔记』梯度下降法和随机梯度下降法和小批量梯度对比
  17. 计算机考试C1-1随笔
  18. Ecshop屏幕wap
  19. 关于AES:加密方式,让你的APK无懈可击,字节跳动Android面试全套真题解析在互联网火了
  20. 什么是操作系统?操作系统的主要特性是什么?主要功能是什么?

热门文章

  1. pmos低电平驱动_MOS管驱动电路总结
  2. 判断点圆关系 (30 分)
  3. 南京邮电大学操作系统实验五:Windows平台多进程共享内存通信
  4. 7-24 到底是不是太胖了 (10分)
  5. 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
  6. FS8205A低压20V N 沟道增强型 MOS 场效应管
  7. WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
  8. 赛宝-亿能软件测试技术沙龙第1期 – 性能测试工程师职业规划与成长之路
  9. NI multism 设计单脉冲发生器实验报告
  10. Leetcode题库1823. 找出游戏的获胜者(约瑟夫环 C实现)