10

みなさん、こんにちは(これは私の最初の投稿です)Codeplex http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-Cから取得した簡単なADコードがあります)そして、私はエンドユーザーのすべての情報を上記のコードから取得することができます。今、私は検索して検索していて、ここから、そして「ユーザーはロックアウトされていますか?」に関するいくつかの興味深いコードスニペットをウェブ上で見つけました。

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();
   }
}

したがって、同じディレクトリエントリの使用方法を理解でき、検索者がアカウントのロックアウトステータスを表示できる場合は、すばらしいでしょう。支援してください。

4

1 に答える 1

18

.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のユーザーやグループを簡単に操作できます。

于 2012-10-20T21:07:13.647 に答える