一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - C#設置本地網絡如DNS、網關、子網掩碼、IP等等

C#設置本地網絡如DNS、網關、子網掩碼、IP等等

2019-12-01 12:06C#教程網 ASP.NET教程

手動設置本地網絡的方法顯然很不可取,所以我們要讓程序幫我們完成,需要的朋友可以參考下

如今網絡在我們的生活工作中所起的作用越來越大,可以說離開了網絡我們就無法正常的工作和生活。作為程序員我們寫的程序大多數也會跟網絡相關,而想要使用網絡首先要將機器的網絡配置設置好。而手動設置的方法顯然很不可取,所以我們要讓程序幫我們完成。下面是一個很常用的C#設置系統各種網絡參數的一個小Demo一起看看吧。 

這個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 

/// <summary> 
/// 網絡設置類,設置網絡的各種參數(DNS、網關、子網掩碼、IP) 
/// </summary> 
public class NetworkSetting 

public NetworkSetting() 

// 構造函數邏輯 


/// <summary> 
/// 設置DNS 
/// </summary> 
/// <param name="dns"></param> 
public static void SetDNS(string[] dns) 

SetIPAddress(null, null, null, dns); 

/// <summary> 
/// 設置網關 
/// </summary> 
/// <param name="getway"></param> 
public static void SetGetWay(string getway) 

SetIPAddress(null, null, new string[] { getway }, null); 

/// <summary> 
/// 設置網關 
/// </summary> 
/// <param name="getway"></param> 
public static void SetGetWay(string[] getway) 

SetIPAddress(null, null, getway, null); 

/// <summary> 
/// 設置IP地址和掩碼 
/// </summary> 
/// <param name="ip"></param> 
/// <param name="submask"></param> 
public static void SetIPAddress(string ip, string submask) 

SetIPAddress(new string[] { ip }, new string[] { submask }, null, null); 

/// <summary> 
/// 設置IP地址,掩碼和網關 
/// </summary> 
/// <param name="ip"></param> 
/// <param name="submask"></param> 
/// <param name="getway"></param> 
public static void SetIPAddress(string ip, string submask, string getway) 

SetIPAddress(new string[] { ip }, new string[] { submask }, new string[] { getway }, null); 

/// <summary> 
/// 設置IP地址,掩碼,網關和DNS 
/// </summary> 
/// <param name="ip"></param> 
/// <param name="submask"></param> 
/// <param name="getway"></param> 
/// <param name="dns"></param> 
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); 




/// <summary> 
/// 啟用DHCP服務器 
/// </summary> 
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); 



/// <summary> 
/// 判斷是否符合IP地址格式 
/// </summary> 
/// <param name="ip"></param> 
/// <returns></returns> 
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; 



好了,寫好上面這個類以后,就等著哪里需要然后NEW一個就可以了。很簡單吧,如果遇到設置失敗的情況,可能是因為權限不夠,請參考C#默認以管理員身份運行程序

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黑人日白人 | 91免费精品国自产拍在线不卡 | 疯狂伦交1一6 小说 风间由美在线 | 国产精品国色综合久久 | 热辣小秘书办公室 | 日韩高清成人毛片不卡 | 污文啊好棒棒啊好了 | 2021年国内自拍 | 色橹橹 | 高清色黄毛片一级毛片 | 动漫人物差差插曲漫画 | 欧美在线国产 | 忘忧草在线社区WWW日本直播 | 亚洲第一福利视频 | 岛国在线播放v片免费 | 男女拍拍拍免费视频网站 | 91久久青青青国产免费 | 日本午夜影院 | 欧美成人二区 | 天天有好逼 | 五月激激激综合网色播免费 | 欧美一级片免费看 | 毛片大全免费看 | 91精品乱码一区二区三区 | 精品夜夜澡人妻无码AV蜜桃 | 亚洲欧美视频在线播放 | 亚洲免费二区 | 亚洲欧美日韩国产精品影院 | 国产一区二区三区久久精品 | 91桃色视频在线观看 | 顶级欧美做受xxx000大乳 | 日韩免费视频播放 | 国产成人lu在线视频 | 国产精品免费看香蕉 | 久久久精品国产免费A片胖妇女 | 天天干夜夜拍 | 欧美一级特黄aaa大片 | 免费一级毛片在线播放放视频 | 亚洲高清无在码在线电影 | 欧美特黄特色aaa大片免费看 | 免费稚嫩福利 |