界面效果图如下:

报表界面

说下关键代码

需要开启 Windows Management Instrumentation服务(默认已经开启),在程序中需要增加 Management引用。

主要有NetworkAdapter(保存适配器的IP地址,网关,子网掩码,设置IP方面等 ),NetworkAdapterUtil(主要是NetworkAdapter类的集合 )两个类。

在windows8 需要在app.manifest文件中

修改配置  <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />,不然就算有管理员权限也修改不了IP地址。

1 设置IP地址的代码。(设置IP地址,修改IP地址需要管理员权限)

  1. /// <summary>
  2. /// 网络适配器类
  3. /// </summary>
  4. public class NetworkAdapter
  5. {
  6.  
  7. /// <summary>
  8. /// 设置IP地址
  9. /// </summary>
  10. /// <param name="ip"></param>
  11. /// <param name="submask"></param>
  12. /// <param name="getway"></param>
  13. /// <param name="dns"></param>
  14. private bool SetIPAddress(string[] ip, string[] submask, string[] getway, string[] dns)
  15. {
  16. ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
  17. ManagementObjectCollection moc = wmi.GetInstances();
  18. ManagementBaseObject inPar = null;
  19. ManagementBaseObject outPar = null;
  20. string str = "";
  21. foreach (ManagementObject mo in moc)
  22. {
  23.  
  24. if (!(bool)mo["IPEnabled"])
  25. continue;
  26.  
  27. if (this.NetworkInterfaceID == mo["SettingID"].ToString())
  28. {
  29. if (ip != null && submask != null)
  30. {
  31. string caption = mo["Caption"].ToString(); //描述
  32. inPar = mo.GetMethodParameters("EnableStatic");
  33. inPar["IPAddress"] = ip;
  34. inPar["SubnetMask"] = submask;
  35. outPar = mo.InvokeMethod("EnableStatic", inPar, null);
  36. str = outPar["returnvalue"].ToString();
  37. return (str==""||str=="")?true:false;
  38. //获取操作设置IP的返回值, 可根据返回值去确认IP是否设置成功。 0或1表示成功
  39. // 返回值说明网址: https://msdn.microsoft.com/en-us/library/aa393301(v=vs.85).aspx
  40. }
  41. if(getway!=null)
  42. {
  43. inPar = mo.GetMethodParameters("SetGateways");
  44. inPar["DefaultIPGateway"] = getway;
  45. outPar = mo.InvokeMethod("SetGateways", inPar, null);
  46. str = outPar["returnvalue"].ToString();
  47. return (str == "" || str == "") ? true : false;
  48. }
  49. if (dns != null)
  50. {
  51. inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
  52. inPar["DNSServerSearchOrder"] = dns;
  53. outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
  54. str = outPar["returnvalue"].ToString();
  55. return (str == "" || str == "") ? true : false;
  56. }
  57.  
  58. }
  59. }
  60. return false;
  61. }

2 设置IP为自动获取

  1. /// <summary>
  2. /// 启用DHCP服务
  3. /// </summary>
  4. public void EnableDHCP()
  5. {
  6.  
  7. ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
  8. ManagementObjectCollection moc = wmi.GetInstances();
  9. foreach (ManagementObject mo in moc)
  10. {
  11. if (!(bool)mo["IPEnabled"])
  12. continue;
  13.  
  14. if (mo["SettingID"].ToString() == this.NetworkInterfaceID) //网卡接口标识是否相等, 相当只设置指定适配器IP地址
  15. {
  16. mo.InvokeMethod("SetDNSServerSearchOrder", null);
  17. mo.InvokeMethod("EnableDHCP", null);
  18.  
  19. }
  20. }

  3. 获取所有适配器

  1. public class NetworkAdapterUtil
  2. {
  3.  
  4. /// <summary>
  5. /// 获取所有适配器类型,适配器被禁用则不能获取到
  6. /// </summary>
  7. /// <returns></returns>
  8. public List<NetworkAdapter> GetAllNetworkAdapters() //如果适配器被禁用则不能获取到
  9. {
  10. IEnumerable<NetworkInterface> adapters = NetworkInterface.GetAllNetworkInterfaces(); //得到所有适配器
  11. return GetNetworkAdapters(adapters);
  12.  
  13. }
  14.  
  15. /// <summary>
  16. /// 根据条件获取IP地址集合,
  17. /// </summary>
  18. /// <param name="adapters">网络接口地址集合</param>
  19. /// <param name="adapterTypes">网络连接状态,如,UP,DOWN等</param>
  20. /// <returns></returns>
  21. private List<NetworkAdapter> GetNetworkAdapters(IEnumerable<NetworkInterface> adapters, params NetworkInterfaceType[] networkInterfaceTypes)
  22. {
  23. adapterList = new List<NetworkAdapter>();
  24.  
  25. foreach (NetworkInterface adapter in adapters)
  26. {
  27. if (networkInterfaceTypes.Length <=) //如果没传可选参数,就查询所有
  28. {
  29. if (adapter != null)
  30. {
  31. NetworkAdapter adp = SetNetworkAdapterValue(adapter);
  32. adapterList.Add(adp);
  33. }
  34. else
  35. {
  36. return null;
  37. }
  38. }
  39. else //过滤查询数据
  40. {
  41. foreach (NetworkInterfaceType networkInterfaceType in networkInterfaceTypes)
  42. {
  43. if (adapter.NetworkInterfaceType.ToString().Equals(networkInterfaceType.ToString()))
  44. {
  45. adapterList.Add(SetNetworkAdapterValue(adapter));
  46. break; //退出当前循环
  47. }
  48. }
  49. }
  50. }
  51. return adapterList;
  52.  
  53. /// <summary>
  54. /// 设置网络适配器信息
  55. /// </summary>
  56. /// <param name="adapter"></param>
  57. /// <returns></returns>
  58. private NetworkAdapter SetNetworkAdapterValue(NetworkInterface adapter)
  59. {
  60. NetworkAdapter networkAdapter = new NetworkAdapter();
  61. IPInterfaceProperties ips = adapter.GetIPProperties();
  62. networkAdapter.Description = adapter.Name;
  63. networkAdapter.NetworkInterfaceType = adapter.NetworkInterfaceType.ToString();
  64. networkAdapter.Speed = adapter.Speed / / + "MB"; //速度
  65. networkAdapter.MacAddress = adapter.GetPhysicalAddress(); //物理地址集合
  66. networkAdapter.NetworkInterfaceID = adapter.Id;//网络适配器标识符
  67.  
  68. networkAdapter.Getwaryes = ips.GatewayAddresses; //网关地址集合
  69. networkAdapter.IPAddresses = ips.UnicastAddresses; //IP地址集合
  70. networkAdapter.DhcpServerAddresses = ips.DhcpServerAddresses;//DHCP地址集合
  71. networkAdapter.IsDhcpEnabled =ips.GetIPv4Properties()==null?false: ips.GetIPv4Properties().IsDhcpEnabled; //是否启用DHCP服务
  72.  
  73. IPInterfaceProperties adapterProperties = adapter.GetIPProperties();//获取IPInterfaceProperties实例
  74. networkAdapter.DnsAddresses = adapterProperties.DnsAddresses; //获取并显示DNS服务器IP地址信息 集合
  75. return networkAdapter;
  76. }
  77. }
  78.  

4  启用, 禁用适配器代码

  1. /// <summary>
  2. /// 启用所有适配器
  3. /// </summary>
  4. /// <returns></returns>
  5. public void EnableAllAdapters()
  6. {
  7. // ManagementClass wmi = new ManagementClass("Win32_NetworkAdapter");
  8. // ManagementObjectCollection moc = wmi.GetInstances();
  9. System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null ");
  10. foreach (System.Management.ManagementObject mo in moc.Get())
  11. {
  12. //if (!(bool)mo["NetEnabled"])
  13. // continue;
  14. string capation = mo["Caption"].ToString();
  15. string descrption =mo["Description"].ToString();
  16. mo.InvokeMethod("Enable",null);
  17. }
  18.  
  19. }
  20.  
  21. /// <summary>
  22. /// 禁用所有适配器
  23. /// </summary>
  24. public void DisableAllAdapters()
  25. {
  26. // ManagementClass wmi = new ManagementClass("Win32_NetworkAdapter");
  27. // ManagementObjectCollection moc = wmi.GetInstances();
  28. System.Management.ManagementObjectSearcher moc = new System.Management.ManagementObjectSearcher("Select * from Win32_NetworkAdapter where NetEnabled!=null ");
  29. foreach (System.Management.ManagementObject mo in moc.Get())
  30. {
  31. //if ((bool)mo["NetEnabled"])
  32. // continue;
  33. string capation = mo["Caption"].ToString();
  34. string descrption = mo["Description"].ToString();
  35. mo.InvokeMethod("Disable", null);
  36. }
  37.  
  38. }

程序下载地址: http://download.csdn.net/detail/ss641135196/8808159

在写程序中参考网址:

https://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx WMI管网

 http://www.cnblogs.com/chengulv/archive/2012/12/29/2839303.html参考网址

http://blog.sina.com.cn/s/blog_64b9c6850100h6r9.html

C#设置IP地址,启用禁用适配器的更多相关文章

  1. iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链

    iptables常用规则:屏蔽IP地址.禁用ping.协议设置.NAT与转发.负载平衡.自定义链 时间 -- :: IT社区推荐资讯 原文 http://itindex.net/detail/4772 ...

  2. Windows下使用命令行设置ip地址的DNS服务器

    使用命令行或者编写bat批处理设置网络连接的IP地址以及DNS服务器地址有时候会比手动更加方便,IP地址和DNS的设置一般是配合的,常用到的几个状态是: 1.IP地址动态获取,DNS也动态 2.IP地 ...

  3. 【转】Centos 设置IP地址的几种方式

    对于很多刚刚接触linux的朋友来说,如何设置linux系统的IP地址,作为第一步,下面小编以centos系统为例,给大家演示如何给centos设置IP地址,如何修改linux 系统IP地址? 查看I ...

  4. Linux CentOS7中 设置IP地址、网关DNS

    cd  /etc/sysconfig/network-scripts/  #进入网络配置文件目录 vi  ifcfg-eno16777736  #编辑配置文件,此处eno后边的编号因电脑而易 TYPE ...

  5. CentOS/Linux 网卡设置 IP地址配置

    CentOS/Linux下设置IP地址 1:临时修改:1.1:修改IP地址# ifconfig eth0 192.168.100.100 1.2:修改网关地址# route add default g ...

  6. Centos如何设置IP地址,LINUX怎么修改IP地址

    对于很多刚刚接触linux的朋友来说,如何设置linux系统的IP地址,作为第一步,下面小编以centos系统为例,给大家演示如何给centos设置IP地址,如何修改linux 系统IP地址? 步骤阅 ...

  7. Linux网络配置:设置IP地址、网关DNS、主机名

    查看网络信息 1.ifconfig eth0 2.ifconfig -a 3.ip add 设置主机名需改配置文件: /etc/hosts /etc/sysconfig/network vim /et ...

  8. Linux系统下如何设置IP地址?

    Linux系统下如何设置IP地址?我们可以通过命令设定IP的方法,不过此方法的前提条件是用户需root权限.在linux系统的 /etc/sysconfig/network-script/ifcfg- ...

  9. 利用netsh命令设置IP地址/DNS服务器地址

    一.设置IP地址 1. 自动获取IP地址: netsh interface ip set address [name=]"本地连接" [source=]dhcp 2. 手动设置IP ...

随机推荐

  1. STM8S 模拟I2C程序

    STM8S的硬件I2C还是存在问题,不敢贸然使用. 于是决定用模拟I2C. #define SCL PE_ODR_ODR1 #define SDA PE_ODR_ODR2 #define SDAM P ...

  2. List、Set、 数组等转字符串

    public class Test { public static void main(String[] args) { String str = ""; // list转字符串 ...

  3. C参数计算

    C‘计算参数时,从右向左压栈的 int a[]={1,3,4}; int * ptr=a; pirntf("%d,%d\n",*ptr,*(++ptr)); 输出都是3:

  4. P2032 「Poetize9」升降梯上

    描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄.Nescafe之塔一共有N层,升降 ...

  5. Qt入门(18)——使用信号和槽连接控件

    下面显示了如何使用信号和槽来创建自定义窗口部件,和如何使用更加复杂的方式把它们连接起来. 首先,源文件被我们分成几部分并放在放在t7目录下. t7/lcdrange.h包含LCDRange类定义.t7 ...

  6. UVa11248 Frequency Hopping(最大流+最小割)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33206 [思路] 最大流最小割. 可以确定的是如果不可行需要修改的 ...

  7. python多线程机制

    Python中的线程从一开始就是操作系统的原生线程.而Python虚拟机也同样使用一个全局解释器锁(Global Interpreter Lock,GIL)来互斥线程多Python虚拟机的使用. GI ...

  8. 理解Java NIO

    基础概念• 缓冲区操作缓冲区及操作是所有I/O的基础,进程执行I/O操作,归结起来就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么把缓冲区填满(读).如下图• 内核空间.用户空间 上图 ...

  9. WebSphere应用服务器中https 请求协议的相关注意事项(服务器使用代理上Internet)

    最近遇到个需求需要web服务器应用通过https方式请求外部Internet服务器的接口,一开始本地测试时使用以下代码: String businessCode = "SH30580&quo ...

  10. XPath与Xquery

    XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...