C#获得本机物理网卡的MAC地址(备忘)
来源:互联网 发布:linux 常用头文件 编辑:程序博客网 时间:2024/05/16 19:04
因项目需求,需要自动收集网卡的相关信息,在网上找了一大堆,但是完全符合要求的不多,有些看似符合要求,但是运行出来的结果,和真实情况有所偏差,所以根据真实环境,在网上搜来的代码上进行了一些修改,不一定完全正确,需要后期多试几台机器,先这样用着。
/// <summary> /// 取网卡信息 /// </summary> /// <returns></returns> public static string GetNetAdapterInfo() { StringBuilder sb = new StringBuilder(); NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); if (adapters != null) { foreach (NetworkInterface ni in adapters) { string fCardType = "未知网卡"; IPInterfaceProperties ips = ni.GetIPProperties(); PhysicalAddress pa = ni.GetPhysicalAddress(); if (pa == null) continue; string pastr = pa.ToString(); if (pastr.Length < 7) continue; if (pastr.Substring(0, 6) == "000000") continue; if (ni.Name.ToLower().IndexOf("vmware") > -1) continue; string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + ni.Id + "\\Connection"; RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false); if (rk != null) { // 区分 PnpInstanceID // 如果前面有 PCI 就是本机的真实网卡 // MediaSubType 为 01 则是常见网卡,02为无线网卡。 string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString(); int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0)); if (fPnpInstanceID.Length > 3 && fPnpInstanceID.Substring(0, 3) == "PCI") if (ni.NetworkInterfaceType.ToString().ToLower().IndexOf("wireless")==-1) fCardType = "物理网卡"; else fCardType = "无线网卡"; else if (fMediaSubType == 1 || fMediaSubType == 0) fCardType = "虚拟网卡"; else if (fMediaSubType == 2 || ni.NetworkInterfaceType.ToString().ToLower().IndexOf("wireless")>-1) fCardType = "无线网卡"; else if (fMediaSubType == 7) fCardType = "蓝牙"; } StringBuilder isb = new StringBuilder(); UnicastIPAddressInformationCollection UnicastIPAddressInformationCollection = ips.UnicastAddresses; foreach (UnicastIPAddressInformation UnicastIPAddressInformation in UnicastIPAddressInformationCollection) { if (UnicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork) isb.Append(string.Format("Ip Address: {0}", UnicastIPAddressInformation.Address)+"\r\n"); // Ip 地址 } // IPAddressCollection ipc = ips.DnsAddresses; //if (ipc.Count > 0) //{ // foreach (IPAddress ip in ipc) // { // isb.Append(string.Format("DNS服务器地址:{0}\r\n",ip)); // } //} string s = string.Format("{0}\r\n描述信息:{1}\r\n类型:{2}\r\n速度:{3} MB\r\nMac地址:{4}\r\n{5}",fCardType,ni.Name,ni.NetworkInterfaceType,ni.Speed/1024/1024,ni.GetPhysicalAddress(),isb.ToString()); sb.Append(s+"\r\n"); } } return sb.ToString(); }
0 0
- C#获得本机物理网卡的MAC地址(备忘)
- C#获得本机物理网卡的MAC地址
- C#获得本机物理网卡的MAC地址而非虚拟网卡MAC地址
- 获取本机网卡的MAC地址?
- 【C++】获得本机所有网卡的IP和MAC地址信息
- 【C++】获得本机所有网卡的IP和MAC地址信息
- 获得本机所有网卡的IP和MAC地址信息
- 【C++】获得本机所有网卡的IP和MAC地址信息
- C#获取本机网卡MAC地址【源代码】
- C#获得本机MAC地址 - [Coding](转)
- 通过WMI获得硬盘Id和CPU的物理序列号网卡的Mac地址
- VC 获取物理网卡的MAC地址
- VC 获取物理网卡的MAC地址
- VC 获取物理网卡的MAC地址
- 获得网卡MAC地址
- 获得网卡MAC地址
- 获得网卡MAC地址 .
- 获得网卡MAC地址
- 修改注册表解决Win10 SSD卡顿
- HDOJ 1423 最长公共上升子序列(LCIS 动态规划)
- 清结算分账业务
- C++异常(1) - auto_ptr智能指针的用法
- eclipse配置maven插件
- C#获得本机物理网卡的MAC地址(备忘)
- 内部类实现单例模式
- FPGA产生基于LFSR的伪随机数
- linux/windows 下搭建新版blockchain API服务器
- window下安装docker教程
- Android过度绘制深度优化---View提前绘制
- 使用Apache Commons Net包实现javaFTP来上传目录
- 日期格式转换【工具类】
- spring中通过工厂方法配置Bean