【问题标题】:Set DNS to 'Obtain automatically' programmatically以编程方式将 DNS 设置为“自动获取”
【发布时间】:2011-08-23 02:37:13
【问题描述】:

在 .NET 上使用 C#,如何将 DNS 服务器设置为“自动获取”?我可以像这样将 IP 地址设置为所需的值。

ManagementClass mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mObjCol = mClass.GetInstances();
foreach (ManagementObject mObj in mObjCol)
{
  if ((bool)mObj["IPEnabled"])
  {
     ManagementBaseObject mboDNS = mObj.GetMethodParameters("SetDNSServerSearchOrder");
     if (mboDNS != null)
     {
        //Assume X.X.X.X and X.X.X.X are the IPs.
        string[] sIPs = { "X.X.X.X", "X.X.X.X" };
        mboDNS["DNSServerSearchOrder"] = sIPs;
        mObj.InvokeMethod("SetDNSServerSearchOrder", mboDNS, null);
     }
  }
}

我尝试将两个 IP 都设置为 null,例如 sIps = { null, null };,但最终根本没有更改设置。

【问题讨论】:

    标签: c# .net winforms networking dns


    【解决方案1】:

    尝试将 DNSServerSearchOrder 设置为空,而不是使用空字符串数组。

    ManagementClass mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection mObjCol = mClass.GetInstances();
    foreach (ManagementObject mObj in mObjCol)
    {
      if ((bool)mObj["IPEnabled"])
      {
         ManagementBaseObject mboDNS = mObj.GetMethodParameters("SetDNSServerSearchOrder");
         if (mboDNS != null)
         {
            mboDNS["DNSServerSearchOrder"] = null;
            mObj.InvokeMethod("SetDNSServerSearchOrder", mboDNS, null);
         }
      }
    }
    

    【讨论】:

    • 我怎么没想到?!谢谢!
    • 有时很难看到所有这些树木的木材。一直发生在我身上。 :)
    • 注意:设置需要以管理员权限或具有 WMI 写入权限的用户运行代码。
    猜你喜欢
    • 2011-05-05
    • 2018-01-13
    • 1970-01-01
    • 2018-09-15
    • 2011-02-11
    • 2021-08-06
    • 1970-01-01
    • 2015-02-26
    • 2016-02-03
    相关资源
    最近更新 更多