首页 > 编程知识 正文

C# 修改本地以太网ip地址

时间:2023-05-05 13:51:24 阅读:224605 作者:4067

因为某项需求,要修改以太网的ip地址,研究了一段时间,因不太懂网络的知识,只实现了最基本的修改以太网ip的功能。如果有错误,欢迎指出
等价于在这里修改:

实现代码: //设置ip地址 private void SetNetworkAdapter(string ipAddress, string subnetMask, string gateway) { IPAddress ethernetIPAddress = GetEthernetIPAddress(); ManagementBaseObject inPar = null; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (!(bool)mo["IPEnabled"]) continue; if (((string[])mo["IPAddress"])[0] == ethernetIPAddress.ToString()) { inPar = mo.GetMethodParameters("EnableStatic"); //设置ip地址和子网掩码 inPar["IPAddress"] = new string[] { ipAddress }; inPar["SubnetMask"] = new string[] { subnetMask }; mo.InvokeMethod("EnableStatic", inPar, null); //设置网关地址 if (gateway != null) { inPar = mo.GetMethodParameters("SetGateways"); inPar["DefaultIPGateway"] = new string[] { gateway }; mo.InvokeMethod("SetGateways", inPar, null); } break; } } } //查找以太网ip private IPAddress GetEthernetIPAddress() { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { foreach (var item in adapter.GetIPProperties().UnicastAddresses) { if (item.Address.AddressFamily == AddressFamily.InterNetwork) return item.Address; //item.IPv4Mask获取掩码 } } //adapter.GetIPProperties().GatewayAddresses获取网关 } throw new Exception("Ethernet not connected"); } 注意事项

这里的:

ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();

是得到所有的ip(包括wlan、虚拟机),
GetEthernetIPAddress()是获取以太网连接的ip,
加了一个判断:

注意注意注意 程序要以管理员方式运行 否则更改不了ip 也不会报错

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。