ShareIdeas

本博客不再更新,欢迎访问我的github,https://github.com/sunke-github/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    部分代码来自网络,自己收集整理写出来的这个小程序可以对本地IP地址的设置,源码公开!因为IP设置程序程序需要使用到WMI,因此首先添加对WMI的引用,打开【解决方案资源管理器】,在【引用】项上单击右键,并选择【添加引用】菜单项,有需要的可以拿用,程序界面如图:

这里用到一类MaskedTextBox控件,具体使用大家可以百度一下,这里便不多说。源代码如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.Management;
 10 using System.IO;
 11 
 12 namespace IPSet
 13 {
 14     public partial class FrmIPset : Form
 15     {
 16         public FrmIPset()
 17         {
 18             InitializeComponent();
 19             // 获取本地计算机所有网卡信息
 20             string carName = "";
 21             ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_NetWorkAdapterConfiguration");
 22             foreach (ManagementObject sear in search.Get())
 23             {
 24                 if (sear["IPAddress"] != null)
 25                 {
 26                     carName = sear["Description"].ToString().Trim();
 27                     comboBox1.Items.Add(carName);
 28                 }
 29             }
 30             comboBox1.SelectedIndex = 0;
 31         }
 32         private void button1_Click(object sender, EventArgs e)
 33         {
 34             ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
 35             ManagementObjectCollection moc = mc.GetInstances();
 36             foreach (ManagementObject mo in moc)
 37             {
 38                 if ((bool)mo["IPEnabled"])
 39                 {
 40                     if (mo["Description"].ToString() == comboBox1.SelectedItem.ToString().Trim())
 41                     {
 42                         ManagementBaseObject newIP =mo.GetMethodParameters("EnableStatic");
 43                         ManagementBaseObject newGateway =mo.GetMethodParameters("SetGateways");
 44                         ManagementBaseObject newDNS =mo.GetMethodParameters("SetDNSServerSearchOrder");
 45                         // 将要修改的目标 IP 地址
 46                      //   string selectNewIP;
 47                         string IPStr = "";
 48                         string[] IPPart = maskedTextBox1.Text.Split('.');
 49                         for (int i = 0; i <= 3;i++ )
 50                         {
 51                             //删除尾部首部的空格
 52                             IPStr+=(IPPart[i].Trim()+".");
 53                         }
 54                         IPStr = IPStr.Substring(0,IPStr.Length-1);
 55                         newIP["IPAddress"] = new string[] { IPStr };
 56 
 57                         //设置子网掩码
 58                          string subStr = "";
 59                          string[] subPart = mtxtSubNetwork.Text.Split('.');
 60                          for (int i = 0; i <= 3; i++)
 61                          {
 62                              //删除尾部首部的空格
 63                              subStr += (subPart[i].Trim() + ".");
 64                          }
 65                          subStr = subStr.Substring(0, subStr.Length - 1);
 66                          newIP["SubnetMask"] = new string[] { subStr };
 67 
 68                          //设置网关地址 
 69                          string gatStr = "";
 70                          string[] gatPart = mtxtGateway.Text.Split('.');
 71                          for (int i = 0; i <= 3; i++)
 72                          {
 73                              gatStr += (gatPart[i].Trim() + ".");
 74                          }
 75                          gatStr = gatStr.Substring(0, gatStr.Length - 1);
 76                          newGateway["DefaultIPGateway"] = new string[] { gatStr };
 77                          // 将要修改的目标 DNS 首选地址
 78                          string dnsStr1 = "";
 79                          string[] dnsPart1 = mtxtDNS1.Text.Split('.');
 80                          for (int i = 0; i <= 3; i++)
 81                          {
 82                              dnsStr1 += (dnsPart1[i].Trim() + ".");
 83                          }
 84                          dnsStr1 = dnsStr1.Substring(0, dnsStr1.Length - 1);
 85                          // 将要修改的目标 DNS 备用地址
 86                          string dnsStr2 = "";
 87                          string[] dnsPart2 = mtxtDNS2.Text.Split('.');
 88                          for (int i = 0; i <= 3; i++)
 89                          {
 90                              dnsStr2 += (dnsPart2[i].Trim() + ".");
 91                          }
 92                          dnsStr2 = dnsStr2.Substring(0, dnsStr2.Length - 1);
 93                          newDNS["DNSServerSearchOrder"] = new string[] { dnsStr1, dnsStr2 };
 94                          // 修改网络设置
 95                          try
 96                          {
 97                              ManagementBaseObject setIP = mo.InvokeMethod("EnableStatic", newIP, null);
 98                              ManagementBaseObject setGateways = mo.InvokeMethod("SetGateways", newGateway, null);
 99                              ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
100                              MessageBox.Show("设置成功");
101                          }
102                          catch (Exception ex)
103                          {
104                              MessageBox.Show(ex .Message);
105                          }
106                          break;
107                     }
108                 }
109             }
110         }
111 
112         private void button2_Click(object sender, EventArgs e)
113         {
114             Application.Exit();
115         }
116         //使能修改按键
117         private void maskedTextBox1_TextChanged(object sender, EventArgs e)
118         {
119             button1.Enabled = true;
120         }
121         //自动获取
122         private void button3_Click(object sender, EventArgs e)
123         {
124             ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
125             ManagementObjectCollection moc = mc.GetInstances();
126             foreach (ManagementObject mo in moc)
127             {
128                 if ((bool)mo["IPEnabled"])
129                 {
130                     if (mo["Description"].ToString() == comboBox1.SelectedItem.ToString().Trim())
131                     {
132                         //重置DNS为空   
133                         mo.InvokeMethod("SetDNSServerSearchOrder", null);
134                         //开启DHCP   
135                         mo.InvokeMethod("EnableDHCP", null);
136                         MessageBox.Show("自动获取IP成功!");
137                         break;
138                     }
139                 }
140             }
141         }
142     }
143 }
posted on 2012-09-30 15:47  ShareIdeas  阅读(5078)  评论(1编辑  收藏  举报