C#实现网卡IP地址自由切换

需求:笔记本经常要在不同的地点连接网络,而各地的网络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服务器等项目的配置了。

《完》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值