2011-05-11 5 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); 
    } 
    } 
} 

私はsIps = { null, null };のように、nullに両方のIPを設定しようとしたが、それは、すべての設定を変更しないで終わります。

答えて

7

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

どのように私はそれを考えなかったのですか?ありがとうございました! – GPX

+0

時には、すべての木々に木が見えないことがあります。いつでも私に起こります。 :) – Till

+0

注:設定には、管理者特権またはWMI書き込みアクセス権を持つユーザーのいずれかでコードを実行する必要があります。 –

関連する問題