大家好(这是我的第一篇文章) 我有一些简单的AD代码,我从Codeplex http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C中提取),我能够从所述代码中获取所有最终用户的信息。现在,我一直在搜索和搜索,并从这里找到一些有趣的代码片段,并在网络上发现“用户是否被锁定?”
我想使用我已经使用了2年的代码,只需添加一点就可以添加到锁定的部分...如果有一个文本框,我会很高兴给了我我的信息,或复选框,或者只是说“用户锁定”的东西,然后我会通知我的Exchange团队并让用户解锁......
我的代码如下:
string eid = this.tbEID.Text;
string user = this.tbUserName.Text.ToString();
string path = "PP://dc=ds,dc=SorryCantTellYou,dc=com";
DirectoryEntry de = new DirectoryEntry(path);
DirectorySearcher ds = new DirectorySearcher(de);
ds.Filter = "(&(objectCategory=person)(sAMAccountName=" + eid + "))";
SearchResultCollection src = ds.FindAll();
//AD results
if (src.Count > 0)
{
if (src[0].Properties.Contains("displayName"))
{
this.tbUserName.Text = src[0].Properties["displayName"][0].ToString();
}
}
所以,如果我能弄明白如何使用相同的目录条目,并且搜索者向我展示了令人惊叹的帐户锁定状态..请协助
答案 0 :(得分:11)
如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。在这里阅读所有相关内容:
基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SamAccountName");
if(user != null)
{
string displayName = user.DisplayName;
if(user.IsAccountLockedOut())
{
// do something here....
}
}
新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!