1. 程式人生 > >本地IP,掩碼,網關,DNS設置

本地IP,掩碼,網關,DNS設置

cps nss network conf 跳過 read parse 沒有 var

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.Net.NetworkInformation;
using System.Text.RegularExpressions;

namespace ZL.Shell業務.NetSetting
{
    public class DHCPSetting
    {
        public
string IpAddress { get; set; } //IP地址 public string SubMask { get; set; } //子網掩碼 public string NetWay { get; set; } //網關 public string DNSAddress { get; set; } //DNS public static DHCPSetting _instance = null; private DHCPSetting() { } static DHCPSetting() {
if (_instance == null) { _instance = new DHCPSetting(); } } public static DHCPSetting Instance { get { return _instance; } } /// <summary> /// 獲取網絡信息 /// </summary>
public void GetDHCPAddress() { ManagementClass manger = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection manColl = manger.GetInstances(); foreach (ManagementObject item in manColl) { if (Convert.ToBoolean(item["ipEnabled"]) == true) { IpAddress = (item["IPAddress"] as string[])[0]; SubMask = (item["IPSubnet"] as string[])[0]; NetWay = (item["DefaultIPGateway"] as string[])[0]; break; } } NetworkInterface[] network = NetworkInterface.GetAllNetworkInterfaces(); foreach (var item in network) { IPAddressCollection dns = item.GetIPProperties().DnsAddresses; if (dns.Count > 0) { DNSAddress = dns[0].ToString(); } } } /// <summary> /// 設置網絡信息 /// </summary> /// <param name="ip"></param> /// <param name="submask"></param> /// <param name="getway"></param> /// <param name="dns"></param> public void SetDHCPAddress(string ip, string submask, string getway, string dns) { ManagementClass manger = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection manColl = manger.GetInstances(); ManagementBaseObject inPar = null; ManagementBaseObject outPar = null; foreach (ManagementObject item in manColl) { //如果沒有啟用IP設置的網絡設備則跳過 if (!(bool)item["IPEnabled"]) { continue; } //設置IP地址和掩碼 if (ip != null && submask != null) { inPar = item.GetMethodParameters("EnableStatic"); inPar["IPAddress"] = new string[] { ip}; inPar["SubnetMask"] = new string[] { submask}; outPar = item.InvokeMethod("EnableStatic", inPar, null); } //設置網關地址 if (getway != null) { inPar = item.GetMethodParameters("SetGateways"); inPar["DefaultIPGateway"] = new string[] { getway }; outPar = item.InvokeMethod("SetGateways", inPar, null); } //設置DNS地址 if (dns != null) { inPar = item.GetMethodParameters("SetDNSServerSearchOrder"); inPar["DNSServerSearchOrder"] = new string[] { dns }; outPar = item.InvokeMethod("SetDNSServerSearchOrder", inPar, null); } } } /// <summary> /// 啟用DHCP服務器 /// </summary> public void StartDHCP() { ManagementClass manger = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection manColl = manger.GetInstances(); foreach (ManagementObject item in manColl) { //如果沒有啟用IP設置的網絡設備則跳過 if (!(bool)item["IPEnabled"]) continue; //重置DNS為空 item.InvokeMethod("SetDNSServerSearchOrder", null); //開啟DHCP item.InvokeMethod("EnableDHCP", null); break; } } /// <summary> /// 判斷輸入格式是否正確 /// </summary> /// <param name="ip"></param> /// <returns></returns> public bool IsDHCPAddress(string ip) { string[] arr = ip.Split(.); if (arr.Length != 4) { return false; } //正則判斷是否由1-3位數組成 foreach (var item in arr) { if (!Regex.IsMatch(item, @"\d{1,3}") || item == "" || int.Parse(item) > 255) { return false; } } return true; } } }

本地IP,掩碼,網關,DNS設置