原文链接
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Management;
namespace IPProvider
{
class WMIForIPSet
{
public WMIForIPSet ()
{
}
public static void SetIPAddress (string [] ip, string [] submask, string [] gatway, string [] dns)
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration" );
ManagementObjectCollection moc = wmi.GetInstances();
ManagementBaseObject inPar = null ;
ManagementBaseObject outPar = null ;
foreach (ManagementObject mo in moc)
{
if (!(bool )mo["IPEnabled" ])
{
continue ;
}
if (ip != null && submask != null )
{
inPar = mo.GetMethodParameters("EnableStatic" );
inPar["IPAddress" ] = ip;
inPar["SubnetMask" ] = submask;
outPar = mo.InvokeMethod("EnableStatic" , inPar, null );
}
if (gatway != null )
{
inPar = mo.GetMethodParameters("SetGateways" );
inPar["DefaultIPGateway" ] = gatway;
outPar = mo.InvokeMethod("SetGateways" , inPar, null );
}
if (dns != null )
{
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder" );
inPar["DNSServerSearchOrder" ] = dns;
outPar = mo.InvokeMethod("SetDNSServerSearchOrder" , inPar, null );
}
}
}
public static void EnableDHCP ()
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration" );
ManagementObjectCollection moc = wmi.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool )mo["IPEnabled" ])
continue ;
mo.InvokeMethod("SetDNSServerSearchOrder" , null );
mo.InvokeMethod("EnableDHCP" , null );
}
}
public static bool IsIPAddress (string ip)
{
string [] arr = ip.Split('.' );
if (arr.Length != 4 )
return false ;
string pattern = @"\d{1,3}" ;
for (int i = 0 ; i < arr.Length; i++)
{
string d = arr[i];
if (i == 0 && d == "0" )
return false ;
if (!Regex.IsMatch(d, pattern))
return false ;
if (d != "0" )
{
d = d.TrimStart('0' );
if (d == "" )
return false ;
if (int .Parse(d) > 255 )
return false ;
}
}
return true ;
}
public static void SetDNS (string [] dns)
{
SetIPAddress(null , null , null , dns);
}
public static void SetGetWay (string getway)
{
SetIPAddress(null , null , new string [] { getway }, null );
}
public static void SetGetWay (string [] getway)
{
SetIPAddress(null , null , getway, null );
}
public static void SetIPAddress (string ip, string submask)
{
SetIPAddress(new string [] { ip }, new string [] { submask }, null , null );
}
public static void SetIPAddress (string ip, string submask, string getway)
{
SetIPAddress(new string [] { ip }, new string [] { submask }, new string [] { getway }, null );
}
}
}
另一篇文章的链接
public class NetworkAdapter
{
private bool SetIPAddress (string [] ip, string [] submask, string [] getway, string [] dns)
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration" );
ManagementObjectCollection moc = wmi.GetInstances();
ManagementBaseObject inPar = null ;
ManagementBaseObject outPar = null ;
string str = "" ;
foreach (ManagementObject mo in moc)
{
if (!(bool )mo["IPEnabled" ])
continue ;
if (this .NetworkInterfaceID == mo["SettingID" ].ToString())
{
if (ip != null && submask != null )
{
string caption = mo["Caption" ].ToString();
inPar = mo.GetMethodParameters("EnableStatic" );
inPar["IPAddress" ] = ip;
inPar["SubnetMask" ] = submask;
outPar = mo.InvokeMethod("EnableStatic" , inPar, null );
str = outPar["returnvalue" ].ToString();
return (str=="0" ||str=="1" )?true :false ;
}
if (getway!=null )
{
inPar = mo.GetMethodParameters("SetGateways" );
inPar["DefaultIPGateway" ] = getway;
outPar = mo.InvokeMethod("SetGateways" , inPar, null );
str = outPar["returnvalue" ].ToString();
return (str == "0" || str == "1" ) ? true : false ;
}
if (dns != null )
{
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder" );
inPar["DNSServerSearchOrder" ] = dns;
outPar = mo.InvokeMethod("SetDNSServerSearchOrder" , inPar, null );
str = outPar["returnvalue" ].ToString();
return (str == "0" || str == "1" ) ? true : false ;
}
}
}
return false ;
}
}
public void EnableDHCP ()
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration" );
ManagementObjectCollection moc = wmi.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool )mo["IPEnabled" ])
continue ;
if (mo["SettingID" ].ToString() == this .NetworkInterfaceID)
{
mo.InvokeMethod("SetDNSServerSearchOrder" , null );
mo.InvokeMethod("EnableDHCP" , null );
}
}
}
public class NetworkAdapterUtil
{
public List<NetworkAdapter> GetAllNetworkAdapters () //如果适配器被禁用则不能获取到
{
IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces();
return GetNetworkAdapters(adapters);
}
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;
}
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;
networkAdapter.DhcpServerAddresses = ips.DhcpServerAddresses;
networkAdapter.IsDhcpEnabled =ips.GetIPv4Properties()==null ?false : ips.GetIPv4Properties().IsDhcpEnabled;
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
networkAdapter.DnsAddresses = adapterProperties.DnsAddresses;
return networkAdapter;
}
}
}
public void EnableAllAdapters ()
{
System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null " );
foreach (System.Management.ManagementObject mo in moc.Get())
{
string capation = mo["Caption" ].ToString();
string descrption =mo["Description" ].ToString();
mo.InvokeMethod("Enable" ,null );
}
}
public void DisableAllAdapters ()
{
System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null " );
foreach (System.Management.ManagementObject mo in moc.Get())
{
string capation = mo["Caption" ].ToString();
string descrption = mo["Description" ].ToString();
mo.InvokeMethod("Disable" , null );
}
}