Active directory récuperer la valeur de l'attribut qui représente la derniere mo

Signaler
Messages postés
6
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 août 2005
-
Messages postés
6
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 août 2005
-
mon état =>
Bonjour tout le monde,
je remerci d'avance tous ceux qui pouront ou ne pouront pas m'aider !
....
a fin d'avertir les utilisateur de la date d'expiration de leur pwd,
je dois absolument récuperer la valeur de l'attribut ["pwdLastSet"]
dans l'Active Directory , le probleme, c'est que la valeur retourné est du type object alors que la valeur de l'attribut est de type LargeInteger ( voir (using) ActiveDs .dll)

soit j'ai une erreur de cast lors quand j'esseet de convertir l'objet object en LargeInteger,


LargeInteger liPasswdLastSet = Ldap.Properties["pwdLastSet"].Value as LargeInteger ;

soit j'ai une erreur de cast quand j'esseil d'utiliser les attribut du type LargeInteger avec un object !!!! (dans la methode)


long fileTime = LongFromLargeInteger(Ldap.Properties["pwdLastSet"].Value);//pas non-plus avec [0]



DateTime pwdSet = DateTime.FromFileTime(fileTime);


private
long LongFromLargeInteger(
object largeInteger)


{


System.Type type = largeInteger.GetType();



int highPart = (
int)type.InvokeMember("HighPart",BindingFlags.GetProperty,
null, largeInteger,
null);



int lowPart = (
int)type.InvokeMember("LowPart",BindingFlags.GetProperty,
null, largeInteger,
null);





return (
long)highPart << 32 | (
uint)lowPart;


}

(SVP)quelqu'un sait comment covertir un object en LargeInteger ?
ou meme une autre solution a mon probleme!!!!
merci d'avance!!!!!

si j'ai ecris des ...erreurs, merci de me le dire, car je commence dans le monde du .NET , ... ...

je suis novice
Recherche d'info, ... svp

je suis novice
Recherche d'info, ... svp.

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
pourquoi faire si compliqué ?

il existe tout ce qu'il faut dans le Framework pour travailler avec ActiveDirectory... ok, faut gratter, mais c'est là

Donc, la premiere chose à faire, est d'ajouter l'assembly System.DirectoryServices.dll, ensuite dans ta classe ajoute la ligne suivante :
using System.DirectoryServices;

Maintenant, tu n'es plus obligé de faire de l'Interop pour utiliser ActiveDirectory


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
6
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
24 août 2005

Merci !
mais j'utilise déja la dll ActiveDirectory... pour me connecter via

DirectoryEntry Ldap =
new DirectoryEntry("WinNT://"+
this.Context.User.Identity.Name.Replace("\","/"));

mais quand je fait:
if(Ldap.Properties["pwdLastSet"].Value==
null)lab8.Text += " pwdLastSet null
";



else lab8.Text += " pwdLastSet pas null
";

cela me retourne que la valeur est null !!!!!
mais je sais qu'ils l'utilisent, car quand je me connecte, "via Windows", la date de validitée est précisé!!!!!

a moin que je n'ai pas compris ce que tu voulais dire!
mais merci!

je suis novice
Recherche d'info, ... svp.