我想问一下,如果有一个LDAP C#函数允许我在AD中进行搜索而不需要调用绑定?
我尝试使用LDP.exe,Windows GUI LDAP工具来搜索AD,它正确地返回信息,但是,因为我无法访问AD,所以我不知道绑定所需的凭据AD。
我曾尝试使用LDIDFE.exe,Windows命令行LDAP工具来搜索AD,它返回了我错误和正确信息的混合。有谁知道为什么?
我相信LDP.exe使用C ++函数ldap_search_s来执行搜索。有什么方法可以在C#中做到这一点吗?
谢谢。
答案 0 :(得分:0)
如果您的程序在加入感兴趣的域的计算机上运行,并且您只知道您的凭据而不知道任何提升的帐户,则至少可以枚举用户帐户和安全组等各种对象。
您可以使用AD powershell,或使用.net' System.DirectoryServices Namespace或System.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();