设置网络配置

作者:追风剑情 发布于:2023-2-23 16:47 分类:C#

转载于: https://blog.csdn.net/weixin_30622181/article/details/98771710

ManagementClass类
ManagementBaseObject类
ManagementObject类
ManagementObjectSearcher类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Management; //需要添加引用System.Management.dll
  4.  
  5. public sealed class NetworkUtil
  6. {
  7. //WMI命名空间
  8. private const string WMI_NAMESPACE = "Win32_NetworkAdapterConfiguration";
  9. //WMI类
  10. private const string WMI_CLASS = "root\\CIMV2";
  11.  
  12. // 查询网卡信息
  13. public static List<NetworkAdapterInfo> GetNetworkAdapters()
  14. {
  15. List<NetworkAdapterInfo> adapters = new List<NetworkAdapterInfo>();
  16. // 指定查询网卡信息 ( IPEnabled 为 True 的 )
  17. string strQry = "Select * from Win32_NetworkAdapterConfiguration where IPEnabled=True";
  18. // ManagementObjectSearcher 类 ,根据指定的查询获取物理控件的集合。
  19. ManagementObjectSearcher objSc = new ManagementObjectSearcher(strQry);
  20. // 用foreach获取元素
  21. foreach (ManagementObject objQry in objSc.Get())
  22. {
  23. uint index = (uint)objQry["Index"];//网卡序号
  24. string desc = (string)objQry["Description"];//网卡描述
  25. NetworkAdapterInfo adapter = new NetworkAdapterInfo();
  26. adapter.index = index;
  27. adapter.description = desc;
  28. adapters.Add(adapter);
  29. //Console.WriteLine("网卡: Index={0}, Description={1}", index, desc);
  30. }
  31. return adapters;
  32. }
  33.  
  34. // 设置网络配置
  35. public static void SetNetConfig(string strIndex, string strIP, string strSubmask,
  36. string strGateway, string strDNS1, string strDNS2)
  37. {
  38. ManagementObject objCls = new ManagementObject(WMI_CLASS, WMI_NAMESPACE+".INDEX="+ strIndex, null);
  39. ManagementBaseObject objInPara;
  40. objInPara = objCls.GetMethodParameters("EnableStatic");
  41. objInPara["IPAddress"] = new string[] { strIP }; // 设置IP
  42. objInPara["SubnetMask"] = new string[] { strSubmask }; // 设置子网掩码
  43. objCls.InvokeMethod("EnableStatic", objInPara, null);
  44. objInPara = objCls.GetMethodParameters("SetGateways");
  45. objInPara["DefaultIPGateway"] = new string[] { strGateway }; // 设置网关
  46. objCls.InvokeMethod("SetGateways", objInPara, null);
  47. //设置DNS
  48. //objInPara = objCls.GetMethodParameters("SetDNSServerSearchOrder");
  49. //objInPara["DNSServerSearchOrder"] = new string[] { strDNS1, strDNS2 };
  50. //objCls.InvokeMethod("SetDNSServerSearchOrder", objInPara, null);
  51. // GetMethodParameters 方法 : 用來取得 SetDNSServerSearchOrder 的参数列表。
  52. // InvokeMethod 方法 : 调用。
  53. }
  54.  
  55. // 设置自动获取网络配置
  56. public static void AutoNetConfig(string strIndex)
  57. {
  58. // 建立 ManagementObject 对象 ( Scope , Path , options )
  59. ManagementObject objCls = new ManagementObject(WMI_CLASS, WMI_NAMESPACE + ".INDEX=" + strIndex, null);
  60. // InvokeMethod 方法 : 在对象上调用方法。
  61. objCls.InvokeMethod("EnableDHCP", null); // 设置自动获取 IP
  62. objCls.InvokeMethod("ReleaseDHCPLease", null); // 释放 IP
  63. objCls.InvokeMethod("RenewDHCPLease", null); // 重新取得 IP
  64. }
  65.  
  66. // 仅测试用
  67. public static void TestNetConfig()
  68. {
  69. string strIndex = "5"; //网卡序号
  70. string strIP = "192.168.1.11"; // IP地址
  71. string strSubmask = "255.255.255.0"; // 子网掩码
  72. string strGateway = "192.168.1.1"; // 网关
  73. string strDNS1 = "61.139.2.69"; // 首选DNS
  74. string strDNS2 = "168.95.192.1"; // 备用DNS
  75. //设置网卡信息
  76. SetNetConfig(strIndex, strIP, strSubmask, strGateway, strDNS1, strDNS2);
  77. }
  78.  
  79. // 仅测试用
  80. public static void TestAutoNetConfig()
  81. {
  82. string strIndex = "5"; //网卡序号
  83. AutoNetConfig(strIndex);
  84. }
  85. }
  86.  
  87. public class NetworkAdapterInfo
  88. {
  89. public uint index;
  90. public string description;
  91.  
  92. public override string ToString()
  93. {
  94. return string.Format("网卡: Index={0}, {1}", index, description);
  95. }
  96. }

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号