... Active Directoryのもの上のすべての情報とリンクされ、(正確なスニペットを見つけることができない私は、過去に行っているより少しです)キーはディレクトリ検索を行い、返されるユーザーのロックアウト時間に基づいて制限しています。さらに、特定のユーザーの場合、追加のプロパティを使用して検索をさらに制限できます。上記のcodeprojectリンクには、特定のロジック(検索制限のための)があると私は信じています。
class Lockout : IDisposable
{
DirectoryContext context;
DirectoryEntry root;
DomainPolicy policy;
public Lockout(string domainName)
{
this.context = new DirectoryContext(
DirectoryContextType.Domain,
domainName
);
//get our current domain policy
Domain domain = Domain.GetDomain(this.context);
this.root = domain.GetDirectoryEntry();
this.policy = new DomainPolicy(this.root);
}
public void FindLockedAccounts()
{
//default for when accounts stay locked indefinitely
string qry = "(lockoutTime>=1)";
TimeSpan duration = this.policy.LockoutDuration;
if (duration != TimeSpan.MaxValue)
{
DateTime lockoutThreshold =
DateTime.Now.Subtract(duration);
qry = String.Format(
"(lockoutTime>={0})",
lockoutThreshold.ToFileTime()
);
}
DirectorySearcher ds = new DirectorySearcher(
this.root,
qry
);
using (SearchResultCollection src = ds.FindAll())
{
foreach (SearchResult sr in src)
{
long ticks =
(long)sr.Properties["lockoutTime"][0];
Console.WriteLine(
"{0} locked out at {1}",
sr.Properties["name"][0],
DateTime.FromFileTime(ticks)
);
}
}
}
public void Dispose()
{
if (this.root != null)
{
this.root.Dispose();
}
}
}
コードは、このポストから引き出された:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5e0fadc2-f27b-48f6-a6ac-644e12256c67/
他のすべての投稿が参照するcodeprojectにはありません.Net Framework 1.1は2.0およびabov用ですe ... http://www.codeproject.com/KB/system/everythingInAD.aspx#45 – monoco