【问题标题】:How to get Windows DNS suffix search list using c++如何使用 C++ 获取 Windows DNS 后缀搜索列表
【发布时间】:2013-04-23 09:23:01
【问题描述】:

如何使用 c++ 从 ip 配置中获取 windows dns 后缀 serach 列表? (.NET

【问题讨论】:

    标签: c++ .net windows


    【解决方案1】:

    您可以从注册表中获取它们。

    如果从网络控制面板设置:

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

    【讨论】:

    • 看起来不错,找到了它们......但真的没有winapi(除了注册)吗?喜欢不那么依赖“集合的起源”的东西?
    • 怀疑 Windows 和网络之间有一点断开连接。担心后缀是不正常的,你只需要一个地址的端点,剩下的就是'魔术'
    • 你也可以使用WMI来查询和设置,c#添加到答案但应该很容易翻译成c++.net
    • 感谢您提供这些解决方案。我基于此信息创建了 PowerShell 命令 / 在此处共享以帮助其他人:gist.github.com/JohnLBevan/95f5b08400dea3607ec65fcdcfa09bdf
    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多