VC获取mac地址
MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。
vc获取mac地址(参考:http://blog.okbase.net/JO2000/archive/642.html)
#include <atlbase.h> #include <atlconv.h> #include <string> #include <vector> #include <iphlpapi.h> using namespace std; #pragma comment(lib,"Iphlpapi.lib") std::vector<std::string> GetMac() { std::vector<std::string> vRet; ULONG ulAdapterInfoSize = sizeof(IP_ADAPTER_INFO); IP_ADAPTER_INFO *pAdapterInfoBkp = NULL, *pAdapterInfo = (IP_ADAPTER_INFO*)new char[ulAdapterInfoSize]; if (GetAdaptersInfo(pAdapterInfo, &ulAdapterInfoSize) == ERROR_BUFFER_OVERFLOW) // 缓冲区不够大 { delete pAdapterInfo; pAdapterInfo = (IP_ADAPTER_INFO*)new char[ulAdapterInfoSize]; pAdapterInfoBkp = pAdapterInfo; } if (GetAdaptersInfo(pAdapterInfo, &ulAdapterInfoSize) == NO_ERROR) { do{ // 遍历所有适配器 if (pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET) // 判断是否为以太网, 以太网适配器是 6 无线局域网适配器是 71 { // pAdapterInfo->Description 是适配器描述 // pAdapterInfo->AdapterName 是适配器名称 string strMac; for (UINT i = 0; i < pAdapterInfo->AddressLength; i++) { char szTmp[8]; sprintf(szTmp, "%02X%c", pAdapterInfo->Address[i], (i == pAdapterInfo->AddressLength - 1) ? '\0' : '-'); strMac.append(szTmp); } vRet.push_back(strMac); } pAdapterInfo = pAdapterInfo->Next; } while (pAdapterInfo); } if (pAdapterInfoBkp) delete pAdapterInfoBkp; return vRet; }
常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义