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

相关推荐
CoderIsArt5 小时前
参数系统的基类Parameter抽象类
c#
盛夏绽放6 小时前
Python字符串常用方法详解
开发语言·python·c#
Tummer836310 小时前
C#+WPF+prism+materialdesign创建工具主界面框架
开发语言·c#·wpf
ghost14311 小时前
C#学习第23天:面向对象设计模式
开发语言·学习·设计模式·c#
yngsqq12 小时前
(for 循环) VS (LINQ) 性能比拼 ——c#
c#·solr·linq
想做后端的小C12 小时前
C# 面向对象 构造函数带参无参细节解析
开发语言·c#·面向对象
炯哈哈12 小时前
【上位机——WPF】App.xml和Application类简介
xml·开发语言·c#·wpf·上位机
bestcxx12 小时前
c# UTC 时间赋值注意事项
c#·utc
酷炫码神12 小时前
C#运算符
开发语言·c#
zybsjn13 小时前
后端系统做国际化改造,生成多语言包
java·python·c#