c#获取和设置网卡ip/dns等信息

来源:互联网 发布:京东抢单软件哪个好 编辑:程序博客网 时间:2024/05/29 11:05

 

using System;using System.Windows.Forms;using System.Management;using System.Net.NetworkInformation;using System.Text.RegularExpressions;namespace 修改本地连接工具{    public partial class Form1 : Form    {        ConfigFile cf = ConfigFile.Instanse;                    public Form1()        {            InitializeComponent();                    }        #region 加载配置文件中的信息        /// <summary>        /// 加载配置文件中的信息        /// </summary>        protected void loadConfig()        {            cf.fileName = AppDomain.CurrentDomain.BaseDirectory + "\\config.ini";            txtIP.Text = cf["ip地址"];            txtSubMark.Text = cf["子网掩码"];            txtGateWay.Text = cf["默认网关"];            txtDNS1.Text = cf["主DNS"];            txtDNS2.Text = cf["备用DNS"];        }         #endregion        #region 设置ip信息到网卡        private void btnSettingNetwork_Click(object sender, EventArgs e)        {                        try            {                if (!IsIpaddress(txtIP.Text.Trim()))                {                    MessageBox.Show("ip格式不正确!"); return;                }                if (!IsIpaddress(txtSubMark.Text.Trim()))                {                    MessageBox.Show("子网掩码格式不正确!"); return;                }                if (!IsIpaddress(txtGateWay.Text.Trim()))                {                    MessageBox.Show("网关格式不正确!"); return;                }                if (!IsIpaddress(txtDNS1.Text.Trim()))                {                    MessageBox.Show("DNS1格式不正确!"); return;                }                if (!IsIpaddress(txtDNS2.Text.Trim()))                {                    MessageBox.Show("DNS2格式不正确!"); return;                }                string[] ip = new string[] {txtIP.Text.Trim() };                string[] SubMark = new string[] {txtSubMark.Text.Trim() };                string[] GateWay = new string[] {txtGateWay.Text.Trim() };                string[] DNS = new string[] {txtDNS1.Text.Trim(),txtDNS2.Text.Trim() };                SetIpInfo(ip, SubMark, GateWay, DNS);                cf["ip地址"] = txtIP.Text.Trim();                cf["子网掩码"] = txtSubMark.Text.Trim();                cf["默认网关"] = txtGateWay.Text.Trim();                cf["主DNS"] = txtDNS1.Text.Trim();                cf["备用DNS"] = txtDNS2.Text.Trim();                MessageBox.Show("ip信息设置成功!","成功提示",MessageBoxButtons.OK,MessageBoxIcon.Information);            }            catch(Exception er)            {                MessageBox.Show("设置出错:"+er.Message,"出错提示",MessageBoxButtons.OK,MessageBoxIcon.Error);            }        }        protected void SetIpInfo(string []ip,string []SubMark,string []GateWay,string []DNS)        {            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;                inPar = mo.GetMethodParameters("EnableStatic");                inPar["IPAddress"] = ip;//ip地址                inPar["SubnetMask"] =SubMark; //子网掩码                 mo.InvokeMethod("EnableStatic", inPar, null);//执行                inPar = mo.GetMethodParameters("SetGateways");                inPar["DefaultIPGateway"] = GateWay; //设置网关地址 1.网关;2.备用网关                outPar = mo.InvokeMethod("SetGateways", inPar, null);//执行                inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");                inPar["DNSServerSearchOrder"] = DNS; //设置DNS  1.DNS 2.备用DNS                mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);// 执行                break; //只设置一张网卡,不能多张。            }        }        #endregion        #region 从网卡获取ip设置信息        /// <summary>        /// 从网卡获取ip设置信息        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnGetFromNetwork_Click(object sender, EventArgs e)        {            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();            foreach (NetworkInterface adapter in nics)            {                bool Pd1 = (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet); //判断是否是以太网连接                if (Pd1)                {                    IPInterfaceProperties ip = adapter.GetIPProperties();     //IP配置信息                    if (ip.UnicastAddresses.Count > 0)                    {                        txtIP.Text = ip.UnicastAddresses[0].Address.ToString();//IP地址                        txtSubMark.Text = ip.UnicastAddresses[0].IPv4Mask.ToString();//子网掩码                    }                    if (ip.GatewayAddresses.Count > 0)                    {                        txtGateWay.Text = ip.GatewayAddresses[0].Address.ToString();//默认网关                    }                    int DnsCount = ip.DnsAddresses.Count;                    Console.WriteLine("DNS服务器地址:");                    if (DnsCount > 0)                    {                        try                        {                            txtDNS1.Text = ip.DnsAddresses[0].ToString(); //主DNS                            txtDNS2.Text = ip.DnsAddresses[1].ToString(); //备用DNS地址                        }                        catch(Exception er)                        {                            throw er;                        }                    }                }            }        }         #endregion        #region 判断是否是正确的ip地址        /// <summary>        /// 判断是否是正确的ip地址        /// </summary>        /// <param name="ipaddress"></param>        /// <returns></returns>        protected bool IsIpaddress(string ipaddress)        {            string[] nums = ipaddress.Split('.');            if (nums.Length != 4) return false;            foreach (string num in nums)            {                if ( Convert.ToInt32(num) < 0 || Convert.ToInt32(num) > 255) return false;            }            return true;        }         #endregion        #region Form1_Load        private void Form1_Load(object sender, EventArgs e)        {            loadConfig();        }         #endregion    }}


 

using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Text.RegularExpressions;namespace 修改本地连接工具{    public class ConfigFile : IConfig    {        // Fields        private string _fileName;        private static ConfigFile _Instance;        // Methods        private ConfigFile()        {        }        public bool CreateFile()        {            bool flag = false;            if (File.Exists(this.fileName))            {                return flag;            }            using (File.Create(this.fileName))            {            }            return true;        }        public bool KeyExists(string Key)        {            return (this.Keys as ICollection<string>).Contains(Key);        }        // Properties        public string fileName        {            get            {                return this._fileName;            }            set            {                this._fileName = value;            }        }        public static ConfigFile Instanse        {            get            {                if (_Instance == null)                {                    _Instance = new ConfigFile();                }                return _Instance;            }        }        public string this[string Key]        {            get            {                if (!this.CreateFile())                {                    foreach (string str in File.ReadAllLines(this.fileName, Encoding.UTF8))                    {                        Match match = Regex.Match(str, @"(\w+)=([\w\W]+)");                        string str2 = match.Groups[1].Value;                        string str3 = match.Groups[2].Value;                        if (str2 == Key)                        {                            return str3;                        }                    }                }                return "";            }            set            {                if (this.CreateFile())                {                    File.AppendAllText(this.fileName, Key + "=" + value + "\r\n");                }                else                {                    string[] contents = File.ReadAllLines(this.fileName, Encoding.UTF8);                    for (int i = 0; i < contents.Length; i++)                    {                        string input = contents[i];                        Match match = Regex.Match(input, @"(\w+)=(\w+)");                        string str2 = match.Groups[1].Value;                        string text1 = match.Groups[2].Value;                        if (str2 == Key)                        {                            contents[i] = str2 + "=" + value;                            File.WriteAllLines(this.fileName, contents);                            return;                        }                    }                    File.AppendAllText(this.fileName, Key + "=" + value + "\r\n");                }            }        }        public string[] Keys        {            get            {                List<string> list = new List<string>();                if (!this.CreateFile())                {                    foreach (string str in File.ReadAllLines(this.fileName, Encoding.UTF8))                    {                        string item = Regex.Match(str, @"(\w+)=(\w+)").Groups[1].Value;                        list.Add(item);                    }                }                return list.ToArray();            }        }    }    public interface IConfig    {        // Methods        bool KeyExists(string Key);        // Properties        string this[string Key] { get; set; }        string[] Keys { get; }    }}

 


运行:

 

 

原创粉丝点击