2025-03-28 09:49:56 +08:00

245 lines
9.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Net.NetworkInformation;
using System.Text;
namespace ConnectPoint
{
/// <summary>
/// 网络适配器工具类,可获取指定网络适配器,集合
/// </summary>
public class NetworkAdapterUtil
{
/// <summary>
/// 用于储存适配器集合
/// </summary>
List<NetworkAdapter> adapterList;
/// <summary>
/// 获取电脑适配器个数
/// </summary>
/// <returns>总个数</returns>
public int GetCount()
{
if (adapterList == null)
{
// GetAllNetworkAdaptersUPAndDown();
GetAllNetworkAdapters();
return 0;
}
return adapterList.Count;
}
/// <summary>
/// 获取 Ethernet,Wireless80211 UP适配器适配器被禁用则不能获取到
/// </summary>
/// <returns></returns>
public List<NetworkAdapter> GetEthernetWirelessNetworkAdaptersUP()
{
//获得所有UP适配器
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == OperationalStatus.Up);
return GetNetworkAdapters(adapters, NetworkInterfaceType.Ethernet, NetworkInterfaceType.Wireless80211);
}
/// <summary>
/// 获取所有适配器类型,适配器被禁用则不能获取到
/// </summary>
/// <returns></returns>
public List<NetworkAdapter> GetAllNetworkAdapters() //如果适配器被禁用则不能获取到
{
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces();
return GetNetworkAdapters(adapters);
}
/// <summary>
/// 获取所有UP适配器类型
/// </summary>
/// <returns></returns>
public List<NetworkAdapter> GetAllNetworkAdaptersUPAddress()
{
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == OperationalStatus.Up);
return GetNetworkAdapters(adapters);
}
/// <summary>
/// 获取所有DOWN适配器类型
/// </summary>
/// <returns></returns>
public List<NetworkAdapter> GetAllNetworkAdaptersDown()
{
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus ==OperationalStatus.Down);
return GetNetworkAdapters(adapters);
}
/// <summary>
/// 根据适配器ID得到适配器信息
/// </summary>
/// <param name="networkInterfaceID"></param>
/// <returns></returns>
public NetworkAdapter GetNeworkAdapterByNetworkInterfaceID(string networkInterfaceID)
{
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
NetworkAdapter network = SetNetworkAdapterValue(adapter);
if (network.NetworkInterfaceID == networkInterfaceID)
{
return network;
}
}
return null;
}
/// <summary>
/// 启用所有适配器
/// </summary>
/// <returns></returns>
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);
}
}
/// <summary>
/// 禁用所有适配器
/// </summary>
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);
}
}
/// <summary>
/// 根据适配器生成报表
/// </summary>
/// <param name="adapters"></param>
/// <returns></returns>
public string ReportByAdapters(List<NetworkAdapter> 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();
}
/// <summary>
/// 根据条件获取IP地址集合
/// </summary>
/// <param name="adapters">网络接口地址集合</param>
/// <param name="adapterTypes">网络连接状态,如,UP,DOWN等</param>
/// <returns></returns>
private List<NetworkAdapter> GetNetworkAdapters(IEnumerable<NetworkInterface> adapters, params NetworkInterfaceType[] networkInterfaceTypes)
{
adapterList = new List<NetworkAdapter>();
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;
}
/// <summary>
/// 设置网络适配器信息
/// </summary>
/// <param name="adapter"></param>
/// <returns></returns>
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;
}
}
}