2013-04-23 38 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