如何检查DNS服务器是否设置为"自动获取"

Mic*_*cah 9 c# dns wmi

当我使用网卡设置的DNSServerSearchOrder属性获取服务器DNS设置时,它会返回它自动解析为的DNS服务器,而不是一个表明它是动态的值(如null).

例如,要将我的DNS服务器设置为"自动获取",我会:

ManagementBaseObject newDNS = myNICManagementObject.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = null;
ManagementBaseObject setDNS = myNICManagementObject.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
Run Code Online (Sandbox Code Playgroud)

现在,在我使用另一个命令将其设置为"自动获取"后,我想确认它已设置:

if( myNICManagementObject["DNSServerSearchOrder"] == null )
{
    MessageBox.Show("DNS Servers Set to Dynamic!");
}
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码不会按预期返回null(也不会弹出消息框).相反,它返回它从我的ISP动态指出的DNS服务器.

有没有办法以编程方式确定我的DNS服务器设置为"自动获取"?

Vad*_*Vad 6

我找到的唯一方法是从注册表中读取:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\\{Network_Adaptor_GUID}\NameServer
Run Code Online (Sandbox Code Playgroud)

如果NameServer为空 - 那么DNS是动态的,否则 - 静态.