Page 1 sur 1
[R] Age mot de passe
Posté : lun. 28 avr. 2008 15:25
par mitch03
Bonjour les gens!
J'abandonne le bon vieux KixTart pour le tout beau AutoIt! Je suis en train de retravailler mes scripts (basiques) et je voudrais savoir par quel moyen récupérer l'âge du mot de passe de l'utilisateur courant (@PWAGE en Kix)?
Merki!

Re: [..] Age mot de passe
Posté : lun. 28 avr. 2008 19:32
par sylvanie
tout est ici
http://www.autoitscript.fr/forum/viewto ... ilisateurs
(réponse de Arrkhan en particulier)
ps : j'aime bien Kix aussi ^^
Re: [..] Age mot de passe
Posté : mar. 29 avr. 2008 11:15
par mitch03
Merci pour cette réponse!
Mais j'aurais aimé l'âge exacte (en jours) du mot de passe de l'utilisateur (identique à @PWAGE dans Kix) et pas un booléen (expiré : true/false) comme dans la classe Win32_UserAccount. Je doute que @PWAGE aille interroger le domaine, cela doit être sûrement être inscrit en local (date de la mise en place du mot de passe peut-être?).
Merci pour votre temps consacré!
Re: [..] Age mot de passe
Posté : mar. 29 avr. 2008 11:50
par ani
vu que tu connait le win32_useraccount, il existe il me semble une variante a @pwage mais je ne suis plus trop sure vu que ceux-ci je l'avait vu y a fort longtemp PasswordAge qu'on pêut récuperer dans Win32_NetworkLoginProfile,ou encore par le ldap m'active directory...ect, mais faudrait jouer avec les objet.
je fait un test avant de poster ... comme je le dit plus haut c'est vieux ...
Re: [..] Age mot de passe
Posté : mar. 29 avr. 2008 12:22
par mitch03
Ayé j'ai trouvé et c'est vraiment trivial!
Code : Tout sélectionner
$obj = ObjGet("WinNT://DOMAINE/USER")
$intPasswordAge = Round($obj.PasswordAge/86400) ; Conversion en jours (1 jour = 86400 secondes)
MsgBox(0, "Test", $intPasswordAge)
Re: [..] Age mot de passe
Posté : mar. 29 avr. 2008 12:25
par ani
ok,

le PasswordAge est défini en seconde, donc pour ceux qui ce demande a quoi correspond le 86400 = 60(seconde)*60(minute)*24(heure)
c'était facile , c'est bien mitch03, t'a de la connaissance en la matière

Re: [..] Age mot de passe
Posté : mar. 29 avr. 2008 12:42
par mitch03
ani a écrit :c'était facile , c'est bien mitch03, t'a de la connaissance en la matière

Héhé!
Bon je m'attaque au reste! (je risque encore de poser des questions

)
Re: [R] Age mot de passe
Posté : mar. 29 avr. 2008 13:09
par Tlem
Il semble que si il n'y à pas de date d'expiration cela ne fonctionne pas.
A moins que ce ne soit lier à autre chose, mais en tout cas chez moi ça ne fonctionne pas, et affiche le message : Variable must be of type "Object"

Re: [R] Age mot de passe
Posté : mar. 29 avr. 2008 13:34
par ani
Tout le monde a une date
Essaye cette cmd sous dos :
WMIC path win32_NetworkLoginProfile get PasswordAge
Concernant l'erreur c'est normal, si tu tape un nom ou un domaine inexistant tu obtiend
Variable must be of type "Object" , pour connaitre les domaine/user il faudra taper toujours sous ms-dos :
wmic path win32_useraccount get caption, tu verra la liste
chez moi 954 jours ^__^
voilà

Re: [R] Age mot de passe
Posté : mar. 29 avr. 2008 21:15
par Tlem
Effectivement, je n'avais pas mis à jour la valeur "//DOMAINE/USER" par ma propre valeur ...
Désolé.
Re: [R] Age mot de passe
Posté : mer. 30 avr. 2008 10:07
par Tlem
J'aime bien aussi la réponse de
ptrex sur le forum Anglais.
Voici son code amélioré visuellement :
Code : Tout sélectionner
$strComputer = "."
$userName = @UserName
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery ("Select * from Win32_NetworkLoginProfile where caption = '" & StringUpper($userName) &"'")
For $objItem in $colItems
$Var = int($objItem.PasswordAge)
$Sec = StringRight($Var, 2)
$Min = Stringleft(StringRight($Var, 4), 2)
$Hour = Stringleft(StringRight($Var, 6), 2)
$Day = Stringleft($Var, Stringlen($Var)-6)
MsgBox (64, "Age du mot de passe : ", $Day & " Jour(s) " & $Hour & "h " & $Min & "mn " & $Sec & "s" & @TAB)
Next