zoukankan      html  css  js  c++  java
  • 【转载】C#实现网卡IP地址自由切换

    需求:笔记本经常要在不同的地点连接网络,而各地的网络IP配置各不相同,这就导致不时的更改网卡的IP地址设置。Windows上更改IP设置很不方便,于是希望能够开发一款能够适用于不同网络,不同网卡的快速IP地址切换程序。

    分析:关键在于如何实现对网络适配器的配置。其实,MS为我们提供了System.Management 命名空间下的ManagementClass类,通过它我们可以获取和设置电脑上所有适配器的信息。其次,就是要实现对配置信息的存储,这个就简单了,可以通过将网卡信息序列化后保存到文件中,然后经反序列化取出。

    实现:解决了上面两个问题,一切就简单了。那就让我们开始吧,最终效果如图:(下载地址

    image

    这里我们着重了解一下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服务器等项目的配置

  • 相关阅读:
    java JDBC (一)
    java 线程(七)等待与唤醒
    java 线程(六)死锁
    java 线程(五)线程安全 Lock接口
    java 线程(四)线程安全 同步方法
    查询计算机启动了多长时间的工具
    查询计算机启动了多长时间的工具
    百度同步盘无法登陆,报错155010,对策
    百度同步盘无法登陆,报错155010,对策
    锁屏工具,解决三星S7迷你锁屏后不能通过指纹解锁的问题
  • 原文地址:https://www.cnblogs.com/fx2008/p/2240893.html
Copyright © 2011-2022 走看看