C没有绑定的LDAP搜索

本文关键字:LDAP 搜索 绑定 | 更新日期: 2023-09-27 18:24:05

我想问一下,是否有LDAP C#函数允许我在AD中进行搜索,而无需调用绑定?

我尝试使用LDP.exe,windows GUI LDAP工具来搜索AD,它正确地返回信息,但是,由于我没有访问AD的权限,我不知道与AD绑定所需的凭据。

我曾尝试使用LDIDFE.exe,windows命令行LDAP工具来搜索AD,它向我返回了错误和正确的信息。有人知道为什么吗?

我相信LDP.exe使用了C++函数ldap_search_s来执行搜索。有什么方法可以在C#中做到这一点吗?

谢谢。

C没有绑定的LDAP搜索

如果您的程序在加入感兴趣域的计算机上运行,并且您只知道您的凭据,而不知道任何提升的帐户,那么您至少可以枚举各种对象,如用户帐户和安全组。

您可以使用AD powershell,也可以使用.net的System.DirectoryServices命名空间或System.DirectoryServices.AccountManagement命名空间。

System.DirectoryServices.AccountManagement命名空间是更新、更简单和首选的方法,除非您无法使用它,否则您可以使用System.DirectorySServices命名空间

以下示例复制自MSDN文章

PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, 
                                           IdentityType.SamAccountName, 
                                           "Guest");
if(usr != null)
{
    if (usr.Enabled == false)
        usr.Enabled = true;
    usr.Save();
    usr.Dispose();
}
ctx.Dispose();