用于IPV4设置信息获取与设置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
namespace ST8PTConvertTool
{
class GetAndSetIpAddress
{
/// <summary>
/// IPV4常规配置信息
/// </summary>
public struct LanSetting
{
/// <summary>
/// 是否自动获取IP
/// </summary>
public bool AutoSetIP;
/// <summary>
/// 是否手动设置IP
/// </summary>
public bool ManualSetIP;
/// <summary>
/// IP地址
/// </summary>
public string IPAddress;
/// <summary>
/// 子网掩码
/// </summary>
public string SubnetMask;
/// <summary>
/// 首选DNS
/// </summary>
public string FirstDNS;
/// <summary>
/// 备用DNS
/// </summary>
public string SpareDNS;
/// <summary>
/// 默认网关
/// </summary>
public string DefaultGateway;
}
/// <summary>
/// 获取IPV4常规配置信息
/// </summary>
/// <param name="lanSetting"></param>
/// <returns></returns>
public static bool GetIPV4GeneralSettingsMsg(out LanSetting lanSetting)
{
lanSetting = new LanSetting();
try
{
ManagementClass managementClass = new ManagementClass("Win32_NetWorkAdapterConfiguration");
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
foreach (ManagementObject managementObject in managementObjectCollection)
{
if (Convert.ToBoolean(managementObject["IPEnabled"]))
{
//DisplayInfo($" Caption:{managementObject["Caption"]}\n ServiceName:{managementObject["ServiceName"]}\n MACAddress:{managementObject["MACAddress"]}");
lanSetting.AutoSetIP = Convert.ToBoolean(managementObject["DHCPEnabled"]);
lanSetting.ManualSetIP = !Convert.ToBoolean(managementObject["DHCPEnabled"]);
string[] ipaddresses = (string[])managementObject["IPAddress"];
string[] subnets = (string[])managementObject["IPSubnet"];
string[] gateways = (string[])managementObject["DefaultIPGateway"];
string[] dnsSetting = (string[])managementObject["DNSServerSearchOrder"];
lanSetting.IPAddress = ipaddresses[0];
lanSetting.SubnetMask = subnets[0];
if (gateways != null)
{
lanSetting.SubnetMask = gateways[0];
}
if (dnsSetting != null)
{
if (dnsSetting.Length > 0)
{
lanSetting.FirstDNS = dnsSetting[0];
}
if (dnsSetting.Length > 1)
{
lanSetting.SpareDNS = dnsSetting[1];
}
}
}
}
return true;
}
catch (Exception)
{
return false;
throw;
}
return false;
}
/// <summary>
/// 设置IPV4常规配置信息
/// </summary>
/// <param name="lanSetting"></param>
/// <returns></returns>
public static bool SetIPV4GeneralSettingsMsg(LanSetting lanSetting)
{
try
{
ManagementClass managementClass = new ManagementClass("Win32_NetWorkAdapterConfiguration");
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
foreach (ManagementObject managementObject in managementObjectCollection)
{
if (Convert.ToBoolean(managementObject["IPEnabled"]))
{
ManagementBaseObject newIP = managementObject.GetMethodParameters("EnableStatic");
ManagementBaseObject newGateway = managementObject.GetMethodParameters("SetGateways");
ManagementBaseObject newDNS = managementObject.GetMethodParameters("SetDNSServerSearchOrder");
//目标IP地址:
newIP["IPAddress"] = new string[] { lanSetting.IPAddress.Trim() };
//子网掩码:
newIP["SubnetMask"] = new string[] { lanSetting.SubnetMask.Trim() };
//默认网关:
newGateway["DefaultIPGateway"] = new string[] { lanSetting.DefaultGateway.Trim() };
newGateway["GatewayCostMetric"] = new int[] { 1 };
// 将要修改的目标 首选DNS服务器
// 将要修改的目标 备用DNS服务器
newDNS["DNSServerSearchOrder"] = new string[] { lanSetting.FirstDNS.Trim(), lanSetting.SpareDNS.Trim() };
// 修改网络设置
try
{
if (lanSetting.AutoSetIP)
{
managementObject.InvokeMethod("EnableStatic", null);
//重置DNS为空
managementObject.InvokeMethod("SetDNSServerSearchOrder", null);
//开启DHCP
managementObject.InvokeMethod("EnableDHCP", null);
//MessageBox.Show("自动获取IP成功!");
}
else
{
ManagementBaseObject setIP = managementObject.InvokeMethod("EnableStatic", newIP, null);
ManagementBaseObject setGateways = managementObject.InvokeMethod("SetGateways", newGateway, null);
ManagementBaseObject setDNS = managementObject.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
//MessageBox.Show("手动设置IP成功");
}
}
catch (Exception ex)
{
return false;
//MessageBox.Show(ex.Message, "设置IP时出现异常");
}
break;
}
}
return true;
}
catch (Exception)
{
return false;
throw;
}
}
}
}