c# - 以编程方式将 DNS 设置为 'Obtain automatically'

标签 c# .net winforms networking dns

在 .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 };,但最终根本没有更改设置。

最佳答案

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

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);
     }
  }
}

关于c# - 以编程方式将 DNS 设置为 'Obtain automatically',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961299/

相关文章:

c# - 有没有办法判断用户指定的目录是否是启用 UAC 的 Windows 7/Vista 中的 protected 目录(并且不以管理员身份运行)

c# - .NET - 用户控件拖放 - 子控件

c# - Unity3d DllNotFoundException 显示我的计算机上不存在的目录

c# - User.Identity.IsAuthenticated 与 WebSecurity.IsAuthenticated

C# 如何解决 Func<T, bool> 中的逆变问题?

c# - 最小起订量返回未被调用

c# - 事务范围内的 "The transaction has already been implicitly or explicitly committed or aborted"

.net - 尝试在 .net 中使用 Mysql

.net - 在 Visual Studio 2017 中使用 Windows 窗体应用程序?

c# - 双击后禁用展开