我一直在使用ldp.exe来指导Active的一些ldap代码的开发。我正在使用win32 API (wldap32)。在这方面,ldp.exe非常有用,因为在程序的右窗格中,它或多或少地显示了用于执行命令的实际win32 API函数和参数。我发现这在制作ldap_search调用时特别有用。如果我能够让搜索在ldp.exe中工作,我就可以直接将搜索转换为ldap_search。
在我试图查询受信任的、链接的基本域之前,所有这些都按预期的方式工作。例如,我登录并验证到x.net。但是我试图查询域y.net,它是从x.net信任的。
像(SAMAccountName=mylogin)这样的搜索查询( BaseDN DC=x,DC=net )可以立即在ldp.exe中工作。如果我将BaseDN更改为DC=y,则DC=net将无法工作。但是,如果转到ldp.exe中的搜索选项并选中“Chase Referrals”框,则查询将有效。
这就是问题所在。我不知道该复选框在win32 API调用方面会做什么。当我直接查询BaseDN DC=y、DC=net和ldap_search时,返回代码是LDAP_REFERRAL。
起初,我认为修复它就像用LDAP_OPT_REFERRALS调用LDAP_OPT_REFERRALS一样简单,但这似乎还不够。我尝试过设置其他各种与LDAP_OPT_REFERRAL_HOP_LIMIT等推荐相关的标志,希望这是我的问题,但似乎没有什么效果。
我认为有一种可能是,ldp.exe实际上是使用额外的函数调用手动跟踪这些引用(但实际上并没有在GUI上显示)。然而,我没有找到任何好的例子来说明如何做到这一点。如果有人有这方面的例子,我们将不胜感激。
此外,我知道这个查询可以工作,因为我可以使用DirectoryEntry和DirectorySearcher访问DirectoryEntry代码,在本例中可以很好地工作。
有人知道ldp.exe 'Chase Referrals‘中发生了什么事,以及如何将其转换为win32 API吗?
发布于 2016-07-27 19:16:09
如果您看到ldp.exe控制台输出,win32 api ldap_search也会得到它的LDAP_REFERRAL。然而,ldp.exe确实使用附加的函数来跟踪引用,但我们在控制台中没有看到这些函数,因为这些函数不是api的。
https://stackoverflow.com/questions/30413501
复制相似问题