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

相关推荐
__water8 小时前
『功能项目』回调函数处理死亡【54】
c#·回调函数·unity引擎
__water8 小时前
『功能项目』眩晕图标显示【52】
c#·unity引擎·动画事件
__water8 小时前
『功能项目』第二职业法师的平A【57】
c#·unity引擎·魔法球伤害传递
__water11 小时前
『功能项目』战士的伤害型技能【45】
c#·unity引擎·战士职业伤害型技能
君莫愁。12 小时前
【Unity】检测鼠标点击位置是否有2D对象
unity·c#·游戏引擎
Lingbug12 小时前
.Net日志组件之NLog的使用和配置
后端·c#·.net·.netcore
咩咩觉主13 小时前
Unity实战案例全解析:PVZ 植物卡片状态分析
unity·c#·游戏引擎
Echo_Lee013 小时前
C#与Python脚本使用共享内存通信
开发语言·python·c#
__water20 小时前
『功能项目』QFrameWork框架重构OnGUI【63】
c#·unity引擎·重构背包框架
Crazy Struggle20 小时前
C# + WPF 音频播放器 界面优雅,体验良好
c#·wpf·音频播放器·本地播放器