2013-04-23 70 views

回答

3

您可以從註冊表中獲取它們。

如果從網絡控制面板設置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\SearchList 

如果設置組策略:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\SearchList 

使用Registry class to read,同一個類可以使用設置,但是,您將需要管理員權限這樣做。使用管理和WMI類

C#:

ManagementObjectSearcher q= new ManagementObjectSearcher("SELECT ServiceName,DNSDomainSuffixSearchOrder FROM Win32_NetworkAdapterConfiguration");// WHERE DNSDomainSuffixSearchOrder IS NOT NULL"); 
var qc= q.Get(); 

foreach (ManagementObject mo in qc) 
{ 
    if (mo.Properties["DNSDomainSuffixSearchOrder"] != null) 
    { 
     var s = mo.Properties["DNSDomainSuffixSearchOrder"]; 
     if (s.Value != null) 
     { 
      Console.WriteLine(mo["ServiceName"]); 
      string[] sfxNames = s.Value as string[]; 
      foreach (string sx in sfxNames) 
      { 
       Console.WriteLine(sx); 
      } 
     } 
    } 
} 
+0

似乎是正確的,發現他們......但真的沒有WINAPI(比其他寄存器)來了嗎?像什麼東西少「設置的起源」依賴? – d3r0n 2013-04-24 08:38:35

+0

懷疑Windows和網絡之間有一點斷開連接。這不是正常的擔心後綴,你只是要求在一個地址端點,其餘的是'魔術' – Adrian 2013-04-24 14:02:15

+0

你也可以使用WMI查詢和設置,C#添加到答案,但應該很容易轉換爲C++ .net – Adrian 2013-04-24 14:02:58