Mot passe AD - VB/VBA/VBS - Programmation
Marsh Posté le 19-12-2011 à 15:04:07
C'est normal puisque tu utilises objADSystemInfo.UserName
Et ca, bah ca renvoit ton user. Avec le bon domaine etc.
Essaie de mettre en ligne 8 :
msgbox objADSystemInfo.UserName
Ca va te renvoyer :
CN=TonUser,DC=TonDomaine etc.
Il te faut donc préciser quel user tu veux.
Du genre :
Set objUser = GetObject("LDAP://IP_De_Ton_Serveur/CN=" & Le_User_Cherché & ",DC=" & Le_Nom_Du_Domaine & " )"
Marsh Posté le 14-12-2011 à 10:40:27
Bonjour à tous
Voila je suis actuellement en stage dans une grande entreprise et je reprend le travail de mon tuteur.
Il y a quelque temps deja il a ecrit un programme en VB 6 et j'ai pour projet de tout remettre en VB.NET.
Je but sur un petit probleme, je doit récuperer la date d'expiration d'un mot de passe utilisateur dans une AD.
Le problème est que j'ai trouvé un bout de code qui me permet de récuperer la date mais c'est celle de ma session sur mon poste.
Je n'arrive pas a modifier la requete pour changer l'utilisateur.
Pouvez-vous m'aider s'il vous plait.
Voici mon code
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ONE_HUNDRED_NANOSECOND = .000000100
Const SECONDS_IN_DAY = 86400
Set objADSystemInfo = CreateObject("ADSystemInfo" )
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)
intUserAccountControl = objUser.Get("userAccountControl" )
dtmValue = objUser.PasswordLastChanged
Set objDomain = GetObject("LDAP://" & objADSystemInfo.DomainDNSName)
Set objMaxPwdAge = objDomain.Get("maxPwdAge" )
dblMaxPwdNano = Abs(objMaxPwdAge.HighPart * 2^32 + objMaxPwdAge.LowPart)
dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND
dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY)
If intTimeInterval >= dblMaxPwdDays Then
WScript.Echo "Le mot de passe a expiré."
Else
WScript.Echo "le mot de passe expire le " & DateValue(dtmValue + dblMaxPwdDays) & " (" & Int((dtmValue + dblMaxPwdDays) - Now) & " jours avant la fin)."
End If