Déverrouiller un compte Active Directory

Messages postés
1
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
- - Dernière réponse : soussous78
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
5 novembre 2016
- 1 sept. 2011 à 15:51
Bonjour à tous,

Je suis en train d'écrire une petite application pour me permettre dans un premier temps de lister les comptes verrouillé de l'anuaire Active Directory et de pouvoir les déverrouiller.

J'arrive bien à lister les comptes verrouillés avec le code suivant :

 
string attrib =
"msDS-User-Account-Control-Computed";
 
user.RefreshCache(newstring[]{attrib});
 
constint UF_LOCKOUT = 0x0010;
 
int flags =
(int)user.Properties[attrib].Value;
 
if(Convert.ToBoolean(flags & UF_LOCKOUT)){Console.WriteLine("{0} is locked out",
user.Name);
}

Mais Comme il s'agit d'un attribut contruit, je ne vois pas de méthode me permettant de déverrouiller le compte.

Pourriez-vous m'aider à ce sujet où me proposer une méthode différente pour arriver au résultat ( par exemple avec "UserAccountControl ").

Merci pour votre aide
Afficher la suite 

4 réponses

Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

il faut d'abord récupérer le DirectoryEntry (entry dans le code ci dessous) correspondant à ton user ensuite :
        private const int ADS_UF_ACCOUNTDISABLE = 0x2;

        /// <summary>
        /// Disable this entity
        /// </summary>
        public virtual void Disable()
        {
            entry.Properties["userAccountControl"].Value = (int)entry.Properties["userAccountControl"].Value | ADS_UF_ACCOUNTDISABLE;
            entry.CommitChanges();
        }
        /// <summary>
        /// Enable this entity
        /// </summary>
        public virtual void Enable()
        {
            entry.Properties["userAccountControl"].Value = (int)entry.Properties["userAccountControl"].Value & ~ADS_UF_ACCOUNTDISABLE;
            entry.CommitChanges();
        }

ShareVB
Commenter la réponse de ShareVB
Messages postés
1
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
7 janvier 2008
0
Merci
Bonjour,

Je cherche depuis plusieur mois un script qui me permettra de deverrouiller des comptes utilisateurs, car a mon entreprise, tout les jours des comptes se verrouille a cause de mauvaise manipulation de mot de pass "miniscule majuscule" je peux pas le desactiver car c'est la politique de l'entreprise.

Le scipt me permettra un gain de temps enormes.

J'avais commencer un script en bat mais le probleme c'est que je coince au niveau pour debloquer le compte.

Pouvez vous m'aider
Commenter la réponse de cs_popo9
Messages postés
10
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
1 septembre 2010
0
Merci
test sa puis CommitChanges()
user.Properties["userAccountControl"].Value = 0x0001;


si tu cherche tjr la solution .
Commenter la réponse de run80
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
5 novembre 2016
0
Merci
Bonjour,
J'ai essayé plein de choses sans succès
J'essaye de débloquer un compte utilisateur nommé Administrateur:
Voici mon code pour récupérer l'user :
DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
            DirectoryEntry User = AD.Children.Find("Administrateur", "user");


ensuite j'ai essayé plein de code dont
User.Properties["userAccountControl"].Value = 0x0001;
            User.CommitChanges();

Mais j'ai l'erreur :'La proprièté répertoire n'est pas présente dans le cache.

En fait User.Properties["userAccountControl"].Value est égal à null.
Auriez vous une solution pour moi?
Merci d'avance!
Commenter la réponse de soussous78