因家中与公司的网络配置不同,而我又是带着我的笔记本在家里与公司来来回回.这就导致要经常设置不同的IP和网关数据,一段时间下来后觉得特烦,做为一个程序员.为什么不好好利用自己的知识偷懒一下呢?特别是像我这样一个懒惰的人...
因为网络IP设置是要涉及到硬件,C#是没有现成接口调用的.只能通过调用API或者是WMI这道系统提供给我们的桥梁..在WMI这个大库中用于管理网络配置的则主要是通过"Win32_NetworkAdapterConfiguration"这个管理类.这里面已基本包括了IP,DNS,网关的设置信息...
在C#中使用WMI是很轻松的事情.下面直接给出C#实现代码,呵呵,我的文字表达能力很差,所以我也不多说了,代码量很少,看起来应该很简单的:
1
using System;
2
using System.Collections;
3
using System.Text;
4
using System.Management;
5
using System.Text.RegularExpressions;
6
namespace Kingthy.Windows.IPChanger.Providers
7
{
8
/// <summary>
9
/// IPProvider 的摘要说明。
10
/// </summary>
11
public class IPProvider
12
{
13
public IPProvider()
14
{
15
//
16
// TODO: 在此处添加构造函数逻辑
17
//
18
}
19
/// <summary>
20
/// 设置DNS
21
/// </summary>
22
/// <param name="dns"></param>
23
public static void SetDNS(string[] dns)
24
{
25
SetIPAddress(null,null,null,dns);
26
}
27
/// <summary>
28
/// 设置网关
29
/// </summary>
30
/// <param name="getway"></param>
31
public static void SetGetWay(string getway)
32
{
33
SetIPAddress(null,null,new string[]{getway},null);
34
}
35
/// <summary>
36
/// 设置网关
37
/// </summary>
38
/// <param name="getway"></param>
39
public static void SetGetWay(string[] getway)
40
{
41
SetIPAddress(null,null,getway,null);
42
}
43
/// <summary>
44
/// 设置IP地址和掩码
45
/// </summary>
46
/// <param name="ip"></param>
47
/// <param name="submask"></param>
48
public static void SetIPAddress(string ip,string submask)
49
{
50
SetIPAddress(new string[]{ip},new string[]{submask},null,null);
51
}
52
/// <summary>
53
/// 设置IP地址,掩码和网关
54
/// </summary>
55
/// <param name="ip"></param>
56
/// <param name="submask"></param>
57
/// <param name="getway"></param>
58
public static void SetIPAddress(string ip,string submask,string getway)
59
{
60
SetIPAddress(new string[]{ip},new string[]{submask},new string[]{getway},null);
61
}
62
/// <summary>
63
/// 设置IP地址,掩码,网关和DNS
64
/// </summary>
65
/// <param name="ip"></param>
66
/// <param name="submask"></param>
67
/// <param name="getway"></param>
68
/// <param name="dns"></param>
69
public static void SetIPAddress(string[] ip,string[] submask,string[] getway,string[] dns)
70
{
71
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
72
ManagementObjectCollection moc = wmi.GetInstances();
73
ManagementBaseObject inPar = null;
74
ManagementBaseObject outPar = null;
75
foreach(ManagementObject mo in moc)
76
{
77
//如果没有启用IP设置的网络设备则跳过
78
if(!(bool)mo["IPEnabled"])continue;
79![](/Images/OutliningIndicators/InBlock.gif)
80
//设置IP地址和掩码
81
if(ip != null && submask != null)
82
{
83
inPar = mo.GetMethodParameters("EnableStatic");
84
inPar["IPAddress"] = ip;
85
inPar["SubnetMask"] = submask;
86
outPar = mo.InvokeMethod("EnableStatic",inPar,null);
87
}
88![](/Images/OutliningIndicators/InBlock.gif)
89
//设置网关地址
90
if(getway != null)
91
{
92
inPar = mo.GetMethodParameters("SetGateways");
93
inPar["DefaultIPGateway"] = getway;
94
outPar = mo.InvokeMethod("SetGateways",inPar,null);
95
}
96![](/Images/OutliningIndicators/InBlock.gif)
97
//设置DNS地址
98
if(dns != null)
99
{
100
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
101
inPar["DNSServerSearchOrder"] = dns;
102
outPar = mo.InvokeMethod("SetDNSServerSearchOrder",inPar,null);
103
}
104
}
105
}
106![](/Images/OutliningIndicators/InBlock.gif)
107
/// <summary>
108
/// 启用DHCP服务器
109
/// </summary>
110
public static void EnableDHCP()
111
{
112
ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
113
ManagementObjectCollection moc = wmi.GetInstances();
114
foreach(ManagementObject mo in moc)
115
{
116
//如果没有启用IP设置的网络设备则跳过
117
if(!(bool)mo["IPEnabled"])continue;
118![](/Images/OutliningIndicators/InBlock.gif)
119
//重置DNS为空
120
mo.InvokeMethod("SetDNSServerSearchOrder",null);
121
//开启DHCP
122
mo.InvokeMethod("EnableDHCP",null);
123
}
124
}
125![](/Images/OutliningIndicators/InBlock.gif)
126
/// <summary>
127
/// 判断是否IP地址格式
128
/// </summary>
129
/// <param name="ip"></param>
130
/// <returns></returns>
131
public static bool IsIPAddress(string ip)
132
{
133
string[] arr = ip.Split('.');
134
if(arr.Length != 4)return false;
135![](/Images/OutliningIndicators/InBlock.gif)
136
string pattern = @"\d{1,3}";
137
for(int i=0; i<arr.Length; i++)
138
{
139
string d = arr[i];
140
if(i == 0 && d == "0")return false;
141
if(!Regex.IsMatch(d,pattern))return false;
142![](/Images/OutliningIndicators/InBlock.gif)
143
if(d != "0")
144
{
145
d = d.TrimStart('0');
146
if(d == "")return false;
147![](/Images/OutliningIndicators/InBlock.gif)
148
if(int.Parse(d) > 255)return false;
149
}
150
}
151![](/Images/OutliningIndicators/InBlock.gif)
152
return true;
153
}
154
}
155
}
156![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
154
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
155
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
156
![](/Images/OutliningIndicators/None.gif)
注:关系Win32_NetworkAdapterConfiguration这个管理类可以参考这个教程
http://www.microsoft.com/china/technet/community/scriptcenter/topics/networking/01_atnc_intro.mspx
下面附上我根据上面的IPProvider做的一个仿系统更改网络IP界面的小程序界面.呵呵
![](/images/cnblogs_com/kingthy/ipchanger.jpg)