【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#教程_脚本之家

相关推荐
玩泥巴的4 小时前
MAF + 飞书:让大模型干活,但别让它乱干
ai·c#·.net·飞书·agent
cpp_w8 小时前
C#基础3- 面向对象中级应用3
后端·c#
步步为营DotNet9 小时前
Async 状态机要搬进运行时了:.NET 10 Runtime Async 实测,快的地方快 1.5 倍,贵的地方贵 5 倍
性能优化·c#·.net·async·runtime
hixiong12310 小时前
C# 使用 ZXingCpp.Angle 进行条码、二维码识别
开发语言·c#·扫码
步步为营DotNet10 小时前
System.Text.Json 源生成:三个“看起来已经生效“的静默失效
c#·.net·native aot·源生成
用户788477316341 天前
用 C# 把每周 6 小时的 PDF 录入干到 20 分钟:一份可复制的桌面 OCR 方案
c#
csdn_aspnet1 天前
C# .NetCore Swagger ISchemaFilter 处理枚举、特殊类型
c#·.netcore·swagger
滴滴答答哒1 天前
C# 技巧:优雅实现对象的“局部更新”与“字段合并”
开发语言·c#
code_long1 天前
.net core 连接打印机 使用zpl指令打印机,并且位图本地渲染zpl指令
c#·.netcore·位图·打印机·模板编辑·模板预览
csdn_aspnet1 天前
C# .NetCore Swagger ISchemaFilter Long 转 String 防精度丢失
c#·.netcore·swagger