需求:笔记本经常要在不同的地点连接网络,而各地的网络IP配置各不相同,这就导致不时的更改网卡的IP地址设置。Windows上更改IP设置很不方便,于是希望能够开发一款能够适用于不同网络,不同网卡的快速IP地址切换程序。
分析:关键在于如何实现对网络适配器的配置。其实,MS为我们提供了System.Management 命名空间下的ManagementClass类,通过它我们可以获取和设置电脑上所有适配器的信息。其次,就是要实现对配置信息的存储,这个就简单了,可以通过将网卡信息序列化后保存到文件中,然后经反序列化取出。
实现:解决了上面两个问题,一切就简单了。那就让我们开始吧,最终效果如图:(下载地址)
这里我们着重了解一下ManagementClass类吧:它表示公共信息模型 (CIM) 管理类。管理类是一个 WMI 类,如 Win32_LogicalDisk 和 Win32_Process,前者表示磁盘驱动器,后者表示进程(如 Notepad.exe),那么网络适配器就是 Win32_NetworkAdapterConfiguration 。关于Win32_NetworkAdapterConfiguration类的更多信息(如它具有的属性和方法),可以参考MSDN上的相关说明。
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
这样就轻松获得了电脑上所有网卡的实例了。一个WMI的实例我们可以用ManagementObject来表示。我们通过调用实例的InvokeMethod方法,来对相应的网卡IP进行配置。如:
networkAdapter.InvokeMethod("EnableDHCP", null, null);//通过调用Win32_NetworkAdapterConfiguration类的EnableDHCP方法,设置网卡实例networkAdapter为自动获得IP地址(即开启DHCP功能)
ManagementBaseObject parIPSetting = networkAdapter.GetMethodParameters("EnableStatic");//对于有参数的Win32_NetworkAdapterConfiguration类的方法,得先用GetMethodParameters方法来获得参数对象,然后再给参数赋值。
parIPSetting["IPAddress"] = new string[] {ipAddress};
parIPSetting["SubnetMask"] = new string[] {subnetMask};
networkAdapter.InvokeMethod("EnableStatic", parIPSetting, null);//这是一个设置IP地址及子网掩码的例子
有了上面的介绍类似的,我相信,只要是用心的人就可以通过MSDN上对Win32_NetworkAdapterConfiguration类字段与方法的说明,就可以很快完成其余的相关网卡的默认网关及DNS服务器等项目的配置了。
《完》
※※※※※※※※※※※※※※--我的程序人生--※※※※※※※※※※※※※※