2011-05-11 41 views
3

在.NET上使用C#時,如何將DNS服務器設置爲'自動獲取'?我可以將IP地址設置爲所需的值。將DNS設置爲'以編程方式自動獲取'

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地址都爲空,像sIps = { null, null };,但最終根本改變設置。

回答

7

嘗試將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); 
    } 
    } 
} 
+0

我怎麼沒有想到這個?謝謝! – GPX 2011-05-11 08:45:26

+0

有時很難看到所有這些樹木的木材。總是會發生在我身上。 :) – Till 2011-05-11 09:11:29

+0

注意:設置需要以管理員權限或具有WMI寫入權限的用戶運行代碼。 – 2016-03-02 23:39:53

相關問題