Déverrouiller un compte Active Directory

nibe75013 Messages postés 1 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 21 novembre 2007 - 21 nov. 2007 à 14:03
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

4 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
30 déc. 2007 à 20:53
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
0
cs_popo9 Messages postés 1 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 7 janvier 2008
7 janv. 2008 à 21:39
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
0
run80 Messages postés 10 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 1 septembre 2010
21 juil. 2010 à 12:35
test sa puis CommitChanges()
user.Properties["userAccountControl"].Value = 0x0001;


si tu cherche tjr la solution .
0
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,
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!
0
Rejoignez-nous