#c# #.net #winforms #networking #dns
#c# #.net #winforms #сеть #dns
Вопрос:
Используя C # в .NET, как мне настроить 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 };
, но в итоге настройки вообще не изменились.
Ответ №1:
Попробуйте установить 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);
}
}
}
Комментарии:
1. Как я об этом не подумал?! Спасибо!
2. Иногда трудно увидеть дерево для всех этих деревьев. Со мной это происходит постоянно. 🙂
3. Примечание: Настройка требует запуска кода либо с правами администратора, либо пользователем с правами записи WMI.