C#LDAP没有绑定的搜索

时间:2014-09-23 07:14:24

标签: c# active-directory ldap

我想问一下,如果有一个LDAP C#函数允许我在AD中进行搜索而不需要调用绑定?

我尝试使用LDP.exe,Windows GUI LDAP工具来搜索AD,它正确地返回信息,但是,因为我无法访问AD,所以我不知道绑定所需的凭据AD。

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

您可以使用AD powershell,或使用.net' System.DirectoryServices NamespaceSystem.DirectoryServices.AccountManagement Namespace

System.DirectoryServices.AccountManagement Namespace命名空间是更新,更简单,更首选的方式,除非您无法使用它,那么您可以使用System.DirectoryServices Namespace

以下示例是从this MSDN article

复制的
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();