【问题标题】:DNS name from NetBIOS name - API function来自 NetBIOS 名称的 DNS 名称 - API 函数
【发布时间】:2011-07-03 10:49:09
【问题描述】:

是否有任何 API 函数可以解析 netbios 用户或组目录对象的名称。

我需要以下格式的输出:

  1. NameFullyQualifiedDN - 示例:CN=John Smith,OU=Users,DC=Engineering,DC=Microsoft,DC=Com
  2. NameDnsDomain - 示例:engineering.microsoft.com\JSmith
  3. 提供 DNS 域名的任何其他格式。

注意:TranslateName 函数在给出名称时失败,如下所示:win2008domainnetbiosname\username

谢谢

【问题讨论】:

  • TranslateName 如何失败?你将什么参数传递给TranslateName
  • 我将 NameSamCompatible 传递给 translatename。请参阅说明中的注释以获取示例并询问 NameFullyQualifiedDN。如果我给 Windows 2003 域用户 SamCompatible 名称,它工作正常。我的用户帐户在 windows 2003 域上,该域与 windows 2008 域具有双向信任关系。
  • 我无法测试任何这些,因此不会将其作为答案提交,但我建议您查看DsCrackNames 或可能IADsNameTranslate
  • IADsNameTranslate 为我工作。非常感谢,哈斯图昆。
  • 嗨,你为什么不给出一个正式的答案以便让我标记它是正确的?我在想你应该为你的努力赢得荣誉。

标签: c++ winapi vb6 ldap adsi


【解决方案1】:

您可以使用IADsNameTranslateDsCrackNames 来实现此目的。

【讨论】:

    【解决方案2】:

    检查getaddrinfoGetAddrInfoW 函数。尝试通过以下服务名称使用它:

    netbios-ns        137/tcp    nbname                 #NETBIOS Name Service
    netbios-ns        137/udp    nbname                 #NETBIOS Name Service
    netbios-dgm       138/udp    nbdatagram             #NETBIOS Datagram Service
    netbios-ssn       139/tcp    nbsession              #NETBIOS Session Service
    

    可以在MSDN page of GetAddrInfoW 函数中找到一个示例。

    当你得到正确答案时,使用DnsHostnameToComputerName函数。

    More info on computer names (MSDN).

    【讨论】:

      【解决方案3】:

      IADsNameTranslate 或 DsCrackNames 无法获取此名称格式:

      NameDnsDomain - 示例:engineering.microsoft.com\JSmith

      如果你看一下 DsCrackNames 的DS_NAME_FORMAT Enumeration 或 IADsNameTranslate 的ADS_NAME_TYPE_ENUM,你就会知道这两个 api 无法实现第二种名称格式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-06
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多