【C#】设置有线网卡IP地址,子网掩码,网关,DNS

方法

cs 复制代码
    public partial class ComputerInfo
    {
        /// <summary>
        /// 设置IP地址,子网掩码,网关,DNS
        /// </summary>
        public static List<NetworkAdapterInfo> SetIpAddressSubMaskDnsGeteway(string ipAddress, string subMask, string geteWay, string dnsMain, string dnsBackup)
        {
            List<NetworkAdapterInfo> networkAdapterInfos = new List<NetworkAdapterInfo>();
            //var str = new StringBuilder();

            ManagementBaseObject inPar = null;
            ManagementBaseObject outPar = null;
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                //屏蔽代码,避免出现无法修改未连接的有线网卡驱动
                //if (!(bool)mo["IPEnabled"])
                //    continue;
                networkAdapterInfos.Add(new NetworkAdapterInfo()
                {
                    Description = mo["Description"].ToString(),
                    IPEnabled = mo["IPEnabled"].ToString(),
                });

                //判断有线网卡
                var description = mo["Description"].ToString();
                //有线网卡
                //Realtek PCIe GbE Family Controller
                //无线网卡
                //Qualcomm QCA9565 802.11b/g/n Wireless Adapter
                //Realtek RTL8852AE WiFi 6 802.11ax PCle Adapter
                //Intel(R) Wi-Fi 6AX201 160MHz
                if (description.Contains("PCI") && new List<string>() { "Wireless", "WiFi", "Wi-Fi", "WLAN" }.Exists(w => description.Contains(w)) == false)
                {
                    //设置ip地址和子网掩码 
                    inPar = mo.GetMethodParameters("EnableStatic");
                    inPar["IPAddress"] = new string[] { ipAddress };
                    inPar["SubnetMask"] = new string[] { subMask };
                    outPar = mo.InvokeMethod("EnableStatic", inPar, null);

                    //设置网关地址 
                    inPar = mo.GetMethodParameters("SetGateways");
                    inPar["DefaultIPGateway"] = new string[] { geteWay };
                    outPar = mo.InvokeMethod("SetGateways", inPar, null);

                    //设置DNS 
                    inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                    inPar["DNSServerSearchOrder"] = new string[] { dnsMain, dnsBackup };
                    outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                }

                //foreach (var item in mo.Properties)
                //{
                //    str.Append($"{item.Name}:{item.Value}\r\n");
                //}
            }

            //var info = str.ToString();
            return networkAdapterInfos;
        }

    }

例子

cs 复制代码
var networkAdapterInfos = ComputerInfo.SetIpAddressSubMaskDnsGeteway("192.168.11.20", "255.255.255.0", "192.168.11.1", "192.168.11.1", "8.8.8.8");

参考:

1.区分有线网卡和无线网卡:https://www.cnblogs.com/CPFlying/archive/2010/03/14/1685733.html

2.设置ip:c# 如何对网络信息进行相关设置(ip,dns,网关等)_C#教程_脚本之家

相关推荐
吾与谁归in9 分钟前
【C#设计模式(13)——代理模式(Proxy Pattern)】
设计模式·c#·代理模式
吾与谁归in11 分钟前
【C#设计模式(14)——责任链模式( Chain-of-responsibility Pattern)】
设计模式·c#·责任链模式
神仙别闹1 小时前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
向宇it11 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
九鼎科技-Leo11 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Heaphaestus,RC12 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
baivfhpwxf202312 小时前
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
开发语言·c#
直裾12 小时前
Scala全文单词统计
开发语言·c#·scala
ZwaterZ14 小时前
vue el-table表格点击某行触发事件&&操作栏点击和row-click冲突问题
前端·vue.js·elementui·c#·vue
ZwaterZ16 小时前
el-table-column自动生成序号&&在序号前插入图标
前端·javascript·c#·vue