En fait, vous devez effectuer une opération au niveau du bit pour définir le bit correct à la valeur appropriée. Dans le lien ci-dessous, vous rencontrerez les drapeaux de contrôle de compte d'utilisateur. Vous n'avez donc qu'à exécuter l'opération logique appropriée sur la propriété pour verrouiller ou déverrouiller le compte.
Le lien suivant va vous intéresser, je suppose.
How to (almost) everything in AD
j'ajouter un exemple de code C# code plus tard.
Voici le code suggéré:
public class AdUser {
private int _userAccountControl
public bool IsLocked {
get {
return _userAccountControl & UserAccountControls.Lock
} set {
if(value)
_userAccountControl = _userAccountControl | UserAccountControls.Lock
else
// Must reverse all the bits in the filter when performing an And operation
_userAccountControl = _userAccountControl & ~UserAccountControls.Lock
}
}
public enum UserAccountControls {
Lock = 0x10
}
}
S'il vous plaît peut-être envisager d'avoir quelques modifications à apporter à ce code, comme je l'ai pas testé. Mais votre code devrait ressembler ou quelque chose de proche comme pour le verrouillage et le déverrouillage du compte utilisateur. Tôt ou tard, vous devrez aller avec DirectoryEntry.Properties [] pour le mettre à la valeur dans votre classe d'objet.
EDIT
Quelle est la façon preferred pour verrouiller un compte Active Directory?
int val = (int)directoryentry.Properties["userAccountControl"].Value;
directoryentry.Properties["userAccountControl"].Value = val | 0x0010;
contre
directoryentry.InvokeSet("IsAccountLocked", true);
En réponse à votre question que je mets dans mon édition, je dirais que ce sont le plus simple, au moins que je sais. Je préfère, pour ce qui me concerne, emballer ces fonctionnalités comme je l'ai fait dans mon exemple de code, de sorte que les autres programmeurs ne se soucient pas des opérations au niveau du bit et ainsi de suite. Pour eux, ils manipulent des objets.
Quant à la meilleure façon entre ces deux, je suppose que c'est une question de préférence. Si vous êtes à l'aise avec les opérations logiques, celles-ci sont normalement préférées. Par comparaison cependant, le deuxième choix est plus simple à jouer.
+1 J'ai appris la méthode DirectoryEntry.InvokeSet(). Merci! =) –