using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Net.NetworkInformation; using System.Text; namespace ConnectPoint { /// /// 网络适配器工具类,可获取指定网络适配器,集合 /// public class NetworkAdapterUtil { /// /// 用于储存适配器集合 /// List adapterList; /// /// 获取电脑适配器个数 /// /// 总个数 public int GetCount() { if (adapterList == null) { // GetAllNetworkAdaptersUPAndDown(); GetAllNetworkAdapters(); return 0; } return adapterList.Count; } /// /// 获取 Ethernet,Wireless80211 UP适配器,适配器被禁用则不能获取到 /// /// public List GetEthernetWirelessNetworkAdaptersUP() { //获得所有UP适配器 IEnumerable adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == OperationalStatus.Up); return GetNetworkAdapters(adapters, NetworkInterfaceType.Ethernet, NetworkInterfaceType.Wireless80211); } /// /// 获取所有适配器类型,适配器被禁用则不能获取到 /// /// public List GetAllNetworkAdapters() //如果适配器被禁用则不能获取到 { IEnumerable adapters = NetworkInterface.GetAllNetworkInterfaces(); return GetNetworkAdapters(adapters); } /// /// 获取所有UP适配器类型 /// /// public List GetAllNetworkAdaptersUPAddress() { IEnumerable adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == OperationalStatus.Up); return GetNetworkAdapters(adapters); } /// /// 获取所有DOWN适配器类型 /// /// public List GetAllNetworkAdaptersDown() { IEnumerable adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus ==OperationalStatus.Down); return GetNetworkAdapters(adapters); } /// /// 根据适配器ID得到适配器信息 /// /// /// public NetworkAdapter GetNeworkAdapterByNetworkInterfaceID(string networkInterfaceID) { IEnumerable adapters = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in adapters) { NetworkAdapter network = SetNetworkAdapterValue(adapter); if (network.NetworkInterfaceID == networkInterfaceID) { return network; } } return null; } /// /// 启用所有适配器 /// /// public void EnableAllAdapters() { // ManagementClass wmi = new ManagementClass("Win32_NetworkAdapter"); // ManagementObjectCollection moc = wmi.GetInstances(); System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null "); foreach (System.Management.ManagementObject mo in moc.Get()) { //if (!(bool)mo["NetEnabled"]) // continue; string capation = mo["Caption"].ToString(); string descrption =mo["Description"].ToString(); mo.InvokeMethod("Enable",null); } } /// /// 禁用所有适配器 /// public void DisableAllAdapters() { // ManagementClass wmi = new ManagementClass("Win32_NetworkAdapter"); // ManagementObjectCollection moc = wmi.GetInstances(); System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null "); foreach (System.Management.ManagementObject mo in moc.Get()) { //if ((bool)mo["NetEnabled"]) // continue; string capation = mo["Caption"].ToString(); string descrption = mo["Description"].ToString(); mo.InvokeMethod("Disable", null); } } /// /// 根据适配器生成报表 /// /// /// public string ReportByAdapters(List adapters) { if (adapters == null || adapters.Count <= 0) { return "没有可用适配器"; } StringBuilder sb = new StringBuilder(); int index = 0; sb.AppendLine("适配器总数: "+adapters.Count); foreach (NetworkAdapter adapter in adapters) { index++; sb.AppendLine("---------------------第" + index + "个适配器信息---------------------"); sb.AppendLine("描述信息: "+adapter.Description); sb.AppendLine("接口类型: " + adapter.NetworkInterfaceType); sb.AppendLine("速度: " + adapter.Speed); sb.AppendLine("获取IP方式: " + (adapter.IsDhcpEnabled?"自动":"手动")); sb.AppendLine("IP地址: "+adapter.IpAddress); sb.AppendLine("子网掩码: " + adapter.Mask); sb.AppendLine("网关: " + adapter.Getway); sb.AppendLine("主DNS地址: " + adapter.DnsMain); sb.AppendLine("备用DNS地址: " + adapter.DnsBackup); if (adapter.IsDhcpEnabled) sb.AppendLine("DHCP服务器: " + adapter.DhcpServer); sb.AppendLine("MAC地址: " + adapter.MacAddres); sb.AppendLine(); } return sb.ToString(); } /// /// 根据条件获取IP地址集合, /// /// 网络接口地址集合 /// 网络连接状态,如,UP,DOWN等 /// private List GetNetworkAdapters(IEnumerable adapters, params NetworkInterfaceType[] networkInterfaceTypes) { adapterList = new List(); foreach (NetworkInterface adapter in adapters) { if (networkInterfaceTypes.Length <=0) //如果没传可选参数,就查询所有 { if (adapter != null) { NetworkAdapter adp = SetNetworkAdapterValue(adapter); adapterList.Add(adp); } else { return null; } } else //过滤查询数据 { foreach (NetworkInterfaceType networkInterfaceType in networkInterfaceTypes) { if (adapter.NetworkInterfaceType.ToString().Equals(networkInterfaceType.ToString())) { adapterList.Add(SetNetworkAdapterValue(adapter)); break; //退出当前循环 } } } } return adapterList; } /// /// 设置网络适配器信息 /// /// /// private NetworkAdapter SetNetworkAdapterValue(NetworkInterface adapter) { NetworkAdapter networkAdapter = new NetworkAdapter(); IPInterfaceProperties ips = adapter.GetIPProperties(); networkAdapter.Description = adapter.Name; networkAdapter.NetworkInterfaceType = adapter.NetworkInterfaceType.ToString(); networkAdapter.Speed = adapter.Speed / 1000 / 1000 + "MB"; //速度 networkAdapter.MacAddress = adapter.GetPhysicalAddress(); //物理地址集合 networkAdapter.NetworkInterfaceID = adapter.Id;//网络适配器标识符 networkAdapter.Getwaryes = ips.GatewayAddresses; //网关地址集合 networkAdapter.IPAddresses = ips.UnicastAddresses; //IP地址集合 networkAdapter.DhcpServerAddresses = ips.DhcpServerAddresses;//DHCP地址集合 networkAdapter.IsDhcpEnabled =ips.GetIPv4Properties()==null?false: ips.GetIPv4Properties().IsDhcpEnabled; //是否启用DHCP服务 IPInterfaceProperties adapterProperties = adapter.GetIPProperties();//获取IPInterfaceProperties实例 networkAdapter.DnsAddresses = adapterProperties.DnsAddresses; //获取并显示DNS服务器IP地址信息 集合 return networkAdapter; } } }