获取当前可使用的网卡并检查网卡设置(网卡的IP,网关,子网掩码,DNS,备用DNS信息)

来源:互联网 发布:澳洲人工智能 编辑:程序博客网 时间:2024/05/17 02:25
public void GetNetAdapter()
        {
          
            try
            {
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection nics = mc.GetInstances();
                foreach (ManagementObject nic in nics)
                {
                    try
                    {
                        if (Convert.ToBoolean(nic["IPEnabled"]) == true)
                        {
                            comboBox1.Items.Add(nic["Caption"].ToString());
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "IP地址更改工具", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
 
 //如果有网卡,默认选中第一块网卡
            if (comboBox1.Items.Count > 0)
            {
                comboBox1.SelectedIndex = 0;
                GetNetInfor(comboBox1.SelectedItem.ToString());
            }
         }
 
public void GetNetInfor(string strNetAdapterName)
        {           
            //获取选中的网卡的IP,网关,子网掩码,DNS,备用DNS信息
            string strIP, strSubnet, strGateway, strDNS, strDNSBY;
            strIP = "0.0.0.0";
            strSubnet = "0.0.0.0";
            strGateway = "0.0.0.0";
            strDNS = "0.0.0.0";
            strDNSBY = "0.0.0.0";
            try
            {
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection nics = mc.GetInstances();
                foreach (ManagementObject nic in nics)
                {
                    try
                    {
                        if (Convert.ToBoolean(nic["IPEnabled"]) == true)
                        {
                            if (nic["Caption"].ToString() == strNetAdapterName)
                            {
                                if ((nic["IPAddress"] as String[]).Length > 0 )
                                {
                                    strIP = (nic["IPAddress"] as String[])[0];
                                }
                                if ((nic["IPSubnet"] as String[]).Length > 0 )
                                {
                                    strSubnet = (nic["IPSubnet"] as String[])[0];
                                }
                                if ((nic["DefaultIPGateway"] as String[]).Length > 0 )
                                {
                                    strGateway = (nic["DefaultIPGateway"] as String[])[0];
                                }
                                if ((nic["DNSServerSearchOrder"] as String[]).Length > 0 )
                                {
                                    strDNS = (nic["DNSServerSearchOrder"] as String[])[0];
                                    strDNSBY = (nic["DNSServerSearchOrder"] as String[])[1];
                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            catch (Exception)
            {
            }
            textBox1.Text = strIP;
            textBox2.Text = strSubnet;
            textBox3.Text = strGateway;
            textBox4.Text = strDNS;
            textBox5.Text = strDNSBY;
        }
 
有的时候,在ManagementObjectCollection nics = mc.GetInstances();时产生异常。具体内容是“ManagementException 找不到”,输出窗口显示“在 System.Management.ManagementException 中第一次偶然出现的“System.Management.dll”类型的异常”不知道是什么原因。
原创粉丝点击