近期由于项目有须要获取本机的全部存在的网络连接名称,在网上也找了资料,有好几种方法,只是就仅仅有一种是可以达到我想要的要求

写下来给大家參考下

第一种方法:遍历注冊表来获取

void __fastcall MyGetLanAdapterName(char *szLanAdapterName)
{HKEY hKey, hSubKey, hNdiIntKey;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}",0,KEY_READ,&hKey) != ERROR_SUCCESS)return;DWORD dwIndex = 0;DWORD dwBufSize = 256;DWORD dwDataType;char szSubKey[256];unsigned char szData[256];while(RegEnumKeyEx(hKey, dwIndex++, szSubKey, &dwBufSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS){if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS){if(RegOpenKeyEx(hSubKey, "Ndi\\Interfaces", 0, KEY_READ, &hNdiIntKey) == ERROR_SUCCESS){dwBufSize = 256;if(RegQueryValueEx(hNdiIntKey, "LowerRange", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS){if(strcmp((char*)szData, "ethernet") == 0) // 推断是不是以太网卡{dwBufSize = 256;if(RegQueryValueEx(hSubKey, "DriverDesc", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS){// szData 中便是适配器具体描写叙述dwBufSize = 256;if(RegQueryValueEx(hSubKey, "NetCfgInstanceID", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS){//szData中便是适配器名称strcpy(szLanAdapterName, (char *)szData);}}}}RegCloseKey(hNdiIntKey);}RegCloseKey(hSubKey);}dwBufSize = 256;} /* end of while */RegCloseKey(hKey);
}

szLanAdapterName即为网络连接的名称 如{C6DFC923-0895-4FCE-85F2-740E6133EC6D}

另外一种方法是通过API:

void __fastcall GetLanAdapterName()
{ULONG ulAdapterInfoSize = sizeof(IP_ADAPTER_INFO);IP_ADAPTER_INFO *pAdapterInfoBkp, *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) == ERROR_SUCCESS ){do{ // 遍历全部适配器if(pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET) // 推断是否为以太网接口{// pAdapterInfo->Description 是适配器描写叙述// pAdapterInfo->AdapterName 是适配器名称}pAdapterInfo = pAdapterInfo->Next;}while(pAdapterInfo);}delete pAdapterInfoBkp;
}

AdapterName 也能得到网络连接的名称 如{C6DFC923-0895-4FCE-85F2-740E6133EC6D} 适配器描写叙述如:Realtek RTL8139(A) PCI Fast Ethernet Adapter

第三种方法也是使用API:

void __fastcall GetLanAdapterName()
{   HANDLE   hMprConfig;DWORD   dwRet=0;CString   strInfo,strTmp;PIP_INTERFACE_INFO   plfTable=NULL;IP_ADAPTER_INDEX_MAP   AdaptMap;DWORD   dwBufferSize=0;WCHAR   szFriendName[256];DWORD   tchSize=sizeof(WCHAR)*256;ZeroMemory(&szFriendName,tchSize);dwRet=MprConfigServerConnect   (NULL,&hMprConfig);dwRet=GetInterfaceInfo(NULL,&dwBufferSize);if(dwRet == ERROR_INSUFFICIENT_BUFFER){plfTable=(PIP_INTERFACE_INFO)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,dwBufferSize);GetInterfaceInfo(plfTable,&dwBufferSize);}strInfo.Empty();for(UINT   i=0;i<plfTable->NumAdapters;i++){AdaptMap=plfTable->Adapter[i];dwRet=MprConfigGetFriendlyName(hMprConfig,AdaptMap.Name,(PWCHAR)szFriendName,tchSize);char szName[256];memset( szName, 0, 256 );int nLen = WideCharToMultiByte( CP_ACP,NULL, szFriendName,-1,NULL,0,NULL,FALSE );WideCharToMultiByte (CP_ACP,NULL,szFriendName,-1,szName,nLen,NULL,FALSE);strTmp.Format(_T("Index:%u\nName:%s\n"),AdaptMap.Index,szName);   //szName即为网络连接的名称strInfo+=strTmp;}HeapFree(GetProcessHeap(),HEAP_ZERO_MEMORY,plfTable);
}

szName即为网络连接的名称,如 "本地连接","本地连接1"...后面通过API函数获取须要增加以下头文件

#include <Mprapi.h>
#include <iphlpapi.h>
#pragma comment( lib, "Iphlpapi.lib" )
#pragma comment( lib, "Mprapi.lib" )

当然, 我须要的是获取网络连接的显示名字,所以选择第三种方法

转载于:https://www.cnblogs.com/gccbuaa/p/6708774.html

获取当前电脑全部网络连接名字相关推荐

  1. C# 获取电脑的网络连接状态

    C# 获取电脑的网络连接状态 原文:C# 获取电脑的网络连接状态 判断连网的方法介绍 1. InternetGetConnectedState 此函数获取网络状态有延时,且对网卡伤害较大 MSDN官方 ...

  2. 查看与其他计算机是否连接网络,电脑的网络连接情况要如何的查看和管理

    电脑的网络连接情况要如何的查看和管理 导读:小编根据大家的需要整理了一份关于<电脑的网络连接情况要如何的查看和管理>的内容,具体内容:电脑网络连接状况的查看,是可以帮助我们更好的知道我们的 ...

  3. orcal 工具能连接上 程序连接不上_电脑无线网络连接不上怎么办

    无线网络是帮助我们摆脱网线的束缚,它的出现带来了巨大的方便,笔记本也在用户中越来越普及.然而却时常会遇到笔记本电脑无线网络连接不上的问题,这种问题该怎样解决呢? 电脑无线网络连接不上怎么办 第一步:右 ...

  4. Windows Phone 8 获取与监听网络连接状态

    现在的只能手机对网络的依赖程度都很高,尤其是新闻.微博.音乐.视频.VOIP通话.游戏等 事实性高的信息类应用,但是目前国内的信息费仍然高居不下,更多的用户只有在 WIFI 的环境下才愿意进行大数据量 ...

  5. 如何解决 电脑右下角网络连接红叉问题?

    如何解决 电脑右下角网络连接红叉问题? 重置网络:在桌面按WIN+R输入CMD点击确定打开命令提示符窗口,win10按win+X直接打开命令提示符,在命令提示符中输入:netsh winsock re ...

  6. 解决电脑本地网络连接显示红叉又可上网问题

    电脑本地网络连接显示红叉?这说明我们的电脑不能连上网络了,因为网络连接图标出现红叉即代表与网络连接中断,很多人一看到这便是赶紧重插网线之类的操作,可是结果没有任何效果,下面我来说下怎么解决电脑本地网络 ...

  7. 计算机无网络连接,电脑无网络连接怎么办

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 电脑无网络连接,不能上网就需要调试,调试的的方法是: 1.首先把本地连接停止再启用一下看看能不能上网. 2.部分运营商送的路由器虽 ...

  8. android xp wifi连接不上,手把手解决xp系统电脑无线网络连接不上的处理技巧

    可能有的小伙伴遇到过xp系统电脑无线网络连接不上的问题,大部分朋友还是不知道xp系统电脑无线网络连接不上的情况应该怎么解决,因此我就给大家整理总结了xp系统电脑无线网络连接不上的完整解决方案,你只用依 ...

  9. mac 电脑连接不上github_告诉你电脑无线网络连接不上怎么办

    随着科技的进步,电脑已成为我们不可或缺的工具.无线网络是笔记本电脑的灵魂,没有网络笔记本就失去了一大半的功能,而我们也失去了一半的乐趣.有什么方法能解决电脑连不上无线网的问题吗?今天,我就和大家分享一 ...

  10. 计算机无线网络怎么连接,电脑无线网络连接不上,小编教你电脑无线网络连接不上怎么办...

    无线网络是帮助我们摆脱网线的束缚,它的出现带来了巨大的方便,笔记本也在用户中越来越普及.然而却时常会遇到笔记本电脑无线网络连接不上的问题,这种问题该怎样解决呢?下面,小编给大家分享电脑无线网络连接不上 ...

最新文章

  1. Error: Invoke-customs are only supported starting with Android O (--min-api 26)
  2. MySQL设置表的字符编码为utf-8
  3. java B2B2C springmvc mybatis仿淘宝电子商城系统(十)用spring Restdocs创建API文档
  4. python期末设计作品_期末作品检查
  5. 【软件测试】黑盒测试の边界值分析法
  6. java限制符含义_JAVA的访问控制符private,default,protected,public
  7. 设计干货之插画模板|彩色手绘自然风景城市风景
  8. ​对于边界值中有不确定字符串时该怎么处理
  9. golang超时控制
  10. PHP二维数组:统计某个键名的相同键值个数
  11. Int.Parse()、Convert.toInt32()和(int)区别
  12. 我用python做期货_使用Python计算股票期货,量化程序化交易
  13. STM32 tjpgd软件JPEG解码后RGB888数据格式问题
  14. 坚持终身学习的重要性:只靠已有知识,你走不了多远
  15. C#将数据导入固定word模板
  16. c语言大作业之自动寄存柜,关于自动寄存柜的问题求解
  17. java html转pdf的几种方式_java 有关word,excel,pdf转换成html 有几种方式
  18. 彻底删除的文件如何恢复?误删数据恢复,四种方法就可以解决
  19. EK1100和EK1110简介
  20. C++软件工程师面试考点.md

热门文章

  1. 模式对话框与非模式对话框的创建方法
  2. 最清楚的01背包问题讲解
  3. 源码解析:init-method、@PostConstruct、afterPropertiesSet孰先孰后
  4. 【转】粒子滤波简介以及相关技术探讨
  5. Linux 链接网络
  6. 如何获取下拉列表框的值
  7. Java网络编程(TCP协议-练习-上传文本文件)
  8. TensorRTSamplePython[end_to_end_tensorflow_mnist]
  9. 操作系统(秋招整理)
  10. XLua访问C#中的List或者数组