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

 

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; }
    }
}

 

运行:

 

 

时间: 2024-10-26 18:50:18

c#获取和设置网卡ip/dns等信息的相关文章

windows8.1网卡IP地址在哪设置?网卡IP地址设置方法

1.我们右击win8.1窗口[开始]菜单如下图所示,会弹出一个小菜单出来.   2. 在弹出的小菜单中点击[控制面板].   3. 在电脑的控制面板中找到[网络和Internet]点击进入,如下图所示.   4.然后我们在进入到的界面会看到有右边有一个[网络和共享中心]点击进入,如下图所示.   5. 进入之后再点击左边的[更改适配器设置]点击进入,如下图所示.   6. 现在在弹出窗口找到"以太网".   7. 然后我们右击它,[以太网]就会弹出一个小菜单我们在小菜单点击[属性]菜单

各操作系统IP/DNS设置方法

  今天给大家讲解如何给各个不同操作系统设置IP/DNS方法.导读<Windows 98设置IP.DNS方法 > 1.Windows 2000/XP IP地址参数设置: 右击桌面网上邻居→选择"属性"→在网卡对应的"本地连接"选择"属性"→"常规"→"Internet协议(TCP/IP)",查看其"属性": 若路由器为默认设置,那么主机网络参数设置为: IP:192.168.

Linux 下获取LAN中指定IP的网卡的MAC(物理地址)

// all.h// 2005/06/20,a.m. wenxy #ifndef _ALL_H#define _ALL_H #include <memory.h>#include <stdio.h>#include <stdlib.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/socket.h>#include <net/if.h>#include

用VBS设置静态IP和DNS服务器地址的代码_vbs

核心代码一: strIPAddress = Array("192.168.0.148") strSubnetMask = Array("255.255.255.0") strGateway = Array("192.168.0.1") strGatewayMetric = Array(1) arrDNSServers = Array("192.168.0.1","192.168.0.2") strCompu

Linux系统下设置静态IP或自动获取动态IP的简单方法

Linux下为机器设置静态IP地址: 代码如下:vim  /etc/sysconfig/network-scripts/ifcfg-eth0 修改这个文件内容如下形式: 代码如下:# Intel Corporation 82541GI Gigabit Ethernet ControllerDEVICE=eth0BOOTPROTO=static    #为静态的HWADDR=00:15:17:B2:DC:B5ONBOOT=yesIPADDR=10.20.134.199 #这个是设置的静态IP地址N

ubuntu系统双网卡设置双IP怎么能同时被外网IP都能ping通,求详细步骤

问题描述 ubuntu系统双网卡设置双IP怎么能同时被外网IP都能ping通,求详细步骤 ubuntu系统双网卡设置双IP怎么能同时被外网IP都能ping通,求详细步骤

Linux下自动获取和静态配置IP的方法

  第一步:激活网卡 系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活. 代码如下: # ifconfig eth0 up 第二步:设置网卡进入系统时启动 想要每次开机就可以自动获取IP地址上网,就要设置网络服务在系统启动时也启动.Linux有一点与windows不同的是很多服务默认是停止的,而且你在某次使用该服务时启动这个服务,但是没设置它为默认启动,则下次进入系统这个服务依然是停止的.下面是设置网络服务在系统启动时也启动的方法. 使用chkconfig命令让网络服务在系统启动级别是

win8怎么设置静态ip?

  win8静态ip设置方法步骤 win8设置静态ip教程大家可以来了解一下,有些朋友不知道win8怎么设置静态ip,其实步骤很简单,如果你想要设置或者遇到了设置失败的情况,可以参考下文步骤. 1.首先检查您的网卡驱动状况是否良好.如果网卡驱动未能正常工作,您可能需要重新安装网卡驱动,以查看您的网络是否工作正常; 2.如果网卡驱动一切正常,建议可以使用以下方法:WIN+X组合键,找到并打开设备管理器; 3.打开之后找到以下选项: 4.找到网络适配器一项(根据各人的网络适配器有不同,有些电脑拥有无

详解CentOs设置静态IP的方法_Linux

在做项目时由于公司局域网采用自动获取IP的方式,导到每次服务器重启主机IP都会变化.为了解决这个问题,我参考了其他的文章然后根据自己的情况设置静态IP解决了这个问题,处理方式如下: 1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或boot