2012-10-20 3 views
4

Bonjour à tous (ceci est mon premier message) J'ai un code AD simple que j'ai tiré de Codeplex http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C) et je suis capable d'obtenir toutes les informations de notre utilisateur final à partir dudit code. Maintenant, j'ai cherché et cherché et j'ai trouvé quelques extraits de code intéressants d'ici, et sur le web concernant "L'utilisateur est-il bloqué?"Vérifiez si le compte Active Directory est verrouillé (WPF C#)

Je voudrais utiliser mon code que j'utilise depuis 2 ans maintenant, et ajouter juste un peu plus à ajouter dans la partie verrouillée ... Je serais heureux s'il y avait une zone de texte qui m'a donné mes informations, ou une case à cocher, ou quelque chose qui vient d'être dit « utilisateur verrouillé » et j'informerait mon équipe Exchange et que l'utilisateur déverrouillé ...

le code que j'ai est le suivant:

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

donc, si je peux comprendre comment utiliser la même entrée d'annuaire, et chercheur pour me montrer l'état de verrouillage de compte qui serait étonnant .. s'il vous plaît aider

+1

http://stackoverflow.com/a/1166393 – r3m0t

+0

duplication possible de [Impossible de trouver la propriété verrouillée dans Active Directory (C#)] (http://stackoverflow.com/questions/1166263/cannot-find-the- locked-property-in-active-directory-c) –

Répondre

7

Si vous utilisez .NET 3.5 et versions ultérieures, vous devez consulter l'espace de noms System.DirectoryServices.AccountManagement (S.DS.AM). À lire ici:

Fondamentalement, vous pouvez définir un contexte de domaine et de trouver facilement les utilisateurs et/ou groupes 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....  

    } 
} 

Le nouveau S.DS.AM, il est vraiment facile de jouer avec les utilisateurs et les groupes dans AD!

+0

ok ok, j'aime ça .... donc si j'ai déjà le "nom d'utilisateur" ou le SamAccountName (tout ce qui est est l'EID que j'ai là-haut) comment faire Je lie votre code avec ce que j'ai en haut? – user1762132

+0

@ user1762132: passez juste 'eid' comme deuxième paramètre dans' .FindByIdentity (ctx, eid) 'et vous devriez avoir terminé! –

+0

Ok, c'est ce que j'ai fait .. donc je ne dois pas poinçonner tout ce code OU et DC plus fou? C'est ce que j'ai .. et s'il vous plaît dites-moi si vous pensez que c'est cool ... et merci btw pour répondre à la question :) – user1762132

Questions connexes