Déverrouiller un compte Active Directory

Signaler
Messages postés
1
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
soussous78
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
5 novembre 2016
-
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

4 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
13
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
Messages postés
1
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
7 janvier 2008

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
Messages postés
10
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
1 septembre 2010

test sa puis CommitChanges()
user.Properties["userAccountControl"].Value = 0x0001;


si tu cherche tjr la solution .
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
5 novembre 2016

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!