1)获取本地硬盘序列号

  1. 调出cmd
  2. 输入wmic diskdrive get serialnumber 或 wmic diskdrive get Name, Manufacturer, Model, InterfaceType, MediaType, SerialNumber
#include <winioctl.h>//获取硬盘序列号CString STWSClientBroker::GetLocalSerialNumber() const
{CString strSerialNumber;HANDLE hFile = CreateFile(_T("\\\\.\\PHYSICALDRIVE0"), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);if (hFile == INVALID_HANDLE_VALUE)return strSerialNumber;DWORD retn;static BYTE buffer[0x1000];STORAGE_DEVICE_DESCRIPTOR* descriptor = (STORAGE_DEVICE_DESCRIPTOR*)buffer;STORAGE_PROPERTY_QUERY p = { StorageDeviceProperty };if (!DeviceIoControl(hFile, IOCTL_STORAGE_QUERY_PROPERTY, &p, sizeof(p), buffer, sizeof(buffer), &retn, 0))return strSerialNumber;if (descriptor->SerialNumberOffset > 0){char Serial[256];BYTE* data;data = buffer + descriptor->SerialNumberOffset;sprintf_s(Serial, 256, "%s", data);std::string SerialNum = Serial;//删除硬盘序列号两端的空格SerialNum.erase(0, SerialNum.find_first_not_of(" "));SerialNum.erase(SerialNum.find_last_not_of(" ") + 1);strSerialNumber = SerialNum.c_str();}return strSerialNumber;
}

2)获取本地IP地址

  1. 调出cmd
  2. 输入ipconfig/all
  3. ipv4地址就是ip地址
CString STWSClientBroker::GetLocalIpAddr() const
{//PIP_ADAPTER_INFO结构体指针存储本机网卡信息PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();//得到结构体大小,用于GetAdaptersInfo参数unsigned long stSize = sizeof(IP_ADAPTER_INFO);//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);//记录网卡数量DWORD netCardNum = 0;GetNumberOfInterfaces(&netCardNum);//记录每张网卡上的IP地址数量int IPnumPerNetCard = 0;if (ERROR_BUFFER_OVERFLOW == nRel){//如果函数返回的是ERROR_BUFFER_OVERFLOW//则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小//这也是说明为什么stSize既是一个输入量也是一个输出量//释放原来的内存空间delete pIpAdapterInfo;//重新申请内存空间用来存储所有网卡信息pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);}IP_ADDR_STRING *pIpAddrString = &(pIpAdapterInfo->IpAddressList);//本地ip地址CString strIpAddr = pIpAddrString->IpAddress.String;//释放资源delete pIpAdapterInfo;pIpAdapterInfo = nullptr;return strIpAddr;
}

3)获取本地MAC地址

  1. 调出cmd
  2. 输入ipconfig/all
  3. 物理地址就是mac地址
CString STWSClientBroker::GetLocalMacAddr() const
{//PIP_ADAPTER_INFO结构体指针存储本机网卡信息PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();//得到结构体大小,用于GetAdaptersInfo参数unsigned long stSize = sizeof(IP_ADAPTER_INFO);//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);//记录网卡数量DWORD netCardNum = 0;GetNumberOfInterfaces(&netCardNum);//记录每张网卡上的IP地址数量int IPnumPerNetCard = 0;if (ERROR_BUFFER_OVERFLOW == nRel){//如果函数返回的是ERROR_BUFFER_OVERFLOW//则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小//这也是说明为什么stSize既是一个输入量也是一个输出量//释放原来的内存空间delete pIpAdapterInfo;//重新申请内存空间用来存储所有网卡信息pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);}//mac地址CString strMacAddr;strMacAddr.Format(_T("%2x%2x%2x%2x%2x%2x"),pIpAdapterInfo->Address[0],pIpAdapterInfo->Address[1],pIpAdapterInfo->Address[2],pIpAdapterInfo->Address[3],pIpAdapterInfo->Address[4],pIpAdapterInfo->Address[5]);strMacAddr.Replace(_T(" "), _T("0"));strMacAddr = strMacAddr.MakeUpper();//释放资源delete pIpAdapterInfo;pIpAdapterInfo = nullptr;return strMacAddr;
}

MFC 获取硬盘序列号、IP地址、MAC地址相关推荐

  1. Python获取电脑硬件配置的封装类,可以获取CPU序列号、主板序列号、BIOS序列号、硬盘序列号和网卡MAC地址

    Python获取电脑硬件配置的封装类,可以获取CPU序列号.主板序列号.BIOS序列号.硬盘序列号和网卡MAC地址. myPyHardware.py # -*- coding: utf-8 -*- i ...

  2. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  3. C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑

    /// <summary> /// hardware_mac 的摘要说明. /// </summary> class HardwareInfo { /// <summar ...

  4. 获取本机IP和MAC地址

    1.定义数据结构 typedef struct s_ip_fname {//一个网卡可能有多个IP地址std::vector<std::string> ips;std::string ma ...

  5. Qt获取本机IP、MAC地址、子网掩码、网卡名等函数设计

    获取本机IP函数 QString getIp() {QString myIp;QList<QHostAddress> ipList = QNetworkInterface::allAddr ...

  6. java 获取本机的ip和mac_java获取本机ip和mac地址

    工作中用到的  总结下,与大家分享 package com.taile.msc.util; import java.net.InetAddress; import java.net.NetworkIn ...

  7. php 获取本机IP和MAC地址

    在centos7和centos8测试通过: function getsysipmac(&$ipaddr, &$mac) { $strinfo = trim(shell_exec(&qu ...

  8. ASP.NET获取客户端IP及MAC地址

    ASP.NET获取客户端IP及MAC地址 2008-12-01 14:50 ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票.留言.评论 等系统的时候防止别人恶意操作,导致数据的虚 ...

  9. Java获取局域网中所有ip和Mac地址

    Java获取局域网中所有ip和Mac地址 定义一个Util public class IpAndMacUtil {/*** 获取本机Mac地址* @param ia* @return* @throws ...

最新文章

  1. Git使用常见问题解决方法汇总
  2. 退出python命令行-在cmd命令行里进入和退出Python程序的方法
  3. mysql 平均月份_Mysql按月份统计和按时段统计SQL
  4. ORA-28547 连接服务器失败,可能是Oracle Net 管理错误
  5. Java基础——Java NIO详解(二)
  6. 归并排序(merge sort)算法实现
  7. 洛谷 P1508 Likecloud-吃、吃、吃
  8. 简便方法搭建Harbor镜像仓库
  9. Openssl多个安全补丁简易分析危害及修复方案
  10. VS C++ memcpy() 用于double、int、结构体
  11. vs2015使用教程
  12. java蓝桥杯练习 调和数列问题
  13. Altera的单时钟同步FIFO,带empty和full端口
  14. boos里的AHCI RAID_如何用Intel主板集成的RAID控制器(Intel RST)实现硬盘提速与硬盘数据恢复...
  15. 别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!
  16. php导出excel表格 打不开,phpspreadsheet 导出的EXCEL 文件打不开
  17. uTools插件-Excalidraw轻量的在线白板绘图工具
  18. vue 下载 xlsx 或 xls表格
  19. 160个破解练习之CrackMe 005 CKme002
  20. [PC] 2004 忍者神龟2:并肩作战 Teenage Mutant Ninja Turtles2:Battle Nexus

热门文章

  1. WhatsApp群发-WhatsApp协议-WhatsApp群控到底是什么?
  2. Java的流程控制语句
  3. linux 远程挂载目录,linux开机自动挂载远程主机文件目录
  4. unity android解析包失败,打包APK失败。求解释
  5. GIS应用案例1:绘制某县人口密度图
  6. 制作自己的CTPN训练集
  7. SwiftUI Mapkit 导航基础教程大全之 MKMapView地图显示并实现导航线路(教程含源码)
  8. Delphi XE5教程9:基本语法元素
  9. 路的选择与人生的哲思──读《未选择的路》
  10. [oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB