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

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

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#默認以管理員身份運行程序

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美8x8x | 久久电影院久久国产 | 视频在线观看高清免费 | 高清在线看 | 亚洲精品一区二区三区在线看 | 久久亚洲伊人 | 国产自拍偷拍自拍 | 精品国产精品国产 | 青青草原伊人网 | 午夜福利在线观看6080 | 国产精品免费看久久久香蕉 | 丝瓜秋葵番茄绿巨人在线观看 | 欧美香蕉 | 男人肌肌捅女人肌肌 | 亚洲精品国精品久久99热 | 日本888 xxxx| 国产精品露脸国语对白99 | 欧美三级一区 | 99精品久久99久久久久久 | 亚洲国产成人综合 | 久久精品亚洲精品国产欧美 | 色吧五月婷婷 | 日本黄大片影院一区二区 | 美女鸡| 国产成人在线视频 | 国产精品51麻豆cm传媒 | 国产欧美亚洲精品第一页青草 | 国产思妍小仙女一二区 | 小舞丝袜调教喷水沦为肉奴 | 精品久久99麻豆蜜桃666 | 欧美专区亚洲 | 四虎在线永久免费视频网站 | 国产精品欧美韩国日本久久 | 久久精品午夜一区二区福利 | 国产成人激情视频 | 男男gaygays18中国 | 国产大乳美女挤奶视频 | 精品麻豆国产 | 精精国产xxxx视频在线播放器 | 国产综合色在线视频区色吧图片 | 色婷综合 |