千家信息网

C#怎么设置本地网络DNS、网关、子网掩码、IP等等

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"C#怎么设置本地网络DNS、网关、子网掩码、IP等等",在日常操作中,相信很多人在C#怎么设置本地网络DNS、网关、子网掩码、IP等等问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年11月13日C#怎么设置本地网络DNS、网关、子网掩码、IP等等

这篇文章主要介绍"C#怎么设置本地网络DNS、网关、子网掩码、IP等等",在日常操作中,相信很多人在C#怎么设置本地网络DNS、网关、子网掩码、IP等等问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C#怎么设置本地网络DNS、网关、子网掩码、IP等等"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


这个Demo是通过"Win32_NetworkAdapterConfiguration"这个管理类.这里面已基本包括了IP,DNS,网关的设置信息。

在C#中使用WMI还是比较简单的:

复制代码 代码如下:


using System;
using System.Collections.Generic;
using System.Text;
using System;
using System.Collections;
using System.Text;
using System.Management;
using System.Text.RegularExpressions;


namespace Demo
{
///


/// 网络设置类,设置网络的各种参数(DNS、网关、子网掩码、IP)
///

public class NetworkSetting
{
public NetworkSetting()
{
// 构造函数逻辑
}

///
/// 设置DNS
///

///
public static void SetDNS(string[] dns)
{
SetIPAddress(null, null, null, dns);
}
///
/// 设置网关
///

///
public static void SetGetWay(string getway)
{
SetIPAddress(null, null, new string[] { getway }, null);
}
///
/// 设置网关
///

///
public static void SetGetWay(string[] getway)
{
SetIPAddress(null, null, getway, null);
}
///
/// 设置IP地址和掩码
///

///
///
public static void SetIPAddress(string ip, string submask)
{
SetIPAddress(new string[] { ip }, new string[] { submask }, null, null);
}
///
/// 设置IP地址,掩码和网关
///

///
///
///
public static void SetIPAddress(string ip, string submask, string getway)
{
SetIPAddress(new string[] { ip }, new string[] { submask }, new string[] { getway }, null);
}
///
/// 设置IP地址,掩码,网关和DNS
///

///
///
///
///
public static void SetIPAddress(string[] ip, string[] submask, string[] getway, string[] dns)
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = wmi.GetInstances();
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
foreach (ManagementObject mo in moc)
{
//如果没有启用IP设置的网络设备则跳过
if (!(bool) mo["IPEnabled"])
continue;

//设置IP地址和掩码
if (ip != null && submask != null)
{
inPar = mo.GetMethodParameters("EnableStatic");
inPar["IPAddress"] = ip;
inPar["SubnetMask"] = submask;
outPar = mo.InvokeMethod("EnableStatic", inPar, null);
}

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

//设置DNS地址
if (dns != null)
{
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
inPar["DNSServerSearchOrder"] = dns;
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
}
}
}

///
/// 启用DHCP服务器
///

public static void EnableDHCP()
{
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = wmi.GetInstances();
foreach (ManagementObject mo in moc)
{
//如果没有启用IP设置的网络设备则跳过
if (!(bool) mo["IPEnabled"])
continue;
//重置DNS为空
mo.InvokeMethod("SetDNSServerSearchOrder", null);
//开启DHCP
mo.InvokeMethod("EnableDHCP", null);
}
}

///
/// 判断是否符合IP地址格式
///

///
///
public static bool IsIPAddress(string ip)
{
//将完整的IP以"."为界限分组
string[] arr = ip.Split('.');


//判断IP是否为四组数组成
if (arr.Length != 4)
return false;


//正则表达式,1~3位整数
string pattern = @"\d{1,3}";
for (int i = 0; i < arr.Length; i++)
{
string d = arr[i];


//判断IP开头是否为0
if (i == 0 && d == "0")
return false;


//判断IP是否是由1~3位数组成
if (!Regex.IsMatch(d, pattern))
return false;

if (d != "0")
{
//判断IP的每组数是否全为0
d = d.TrimStart('0');
if (d == "")
return false;

//判断IP每组数是否大于255
if (int.Parse(d) > 255)
return false;
}
} return true;
}
}
}

到此,关于"C#怎么设置本地网络DNS、网关、子网掩码、IP等等"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

网关 网络 地址 C# 子网 学习 代码 更多 网络设备 设备 帮助 实用 接下来 位数 信息 函数 参数 开头 整数 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 mtk功能机软件开发 天津尚川互联网科技有限公司 阿里巴巴后台服务器 管理工具没有组件服务器 上海客蕊网络技术有限公司 如何做好网络安全的建议 软件开发文档需要多长时间 腾讯云服务器代理商 信息技术数据库考点高一 三国无双连接服务器 服务器里面的文件怎么管理 网络安全 投入 地形数据库升级在哪个章节 什么样的服务器能用 变身him去服务器里整蛊玩家 游戏服务器错误55是什么意思 深圳市理奥网络技术隐私空间 加强网络安全防范措施建议 赫章县软件开发 利用ping监控服务器存活 论文数据库有哪些类型 网管软件开发怎么样 服务器拒绝离线文件是怎么回事呢 网络安全与管理试题与答案 网络安全人才计划表 关系数据库的设计 腾讯公司软件开发部人员 重庆互联网软件开发多少钱 谈谈对中文三大数据库收获建议 重庆软件开发平均薪资
0