Infos (ex: expiration mot de passe) sur un compte réseau (avec adsi)

Soyez le premier à donner votre avis sur cette source.

Vue 7 214 fois - Téléchargée 571 fois

Description

Je n'ai pas trouvé de code VB sur le site expliquant comment accèder aux propriétés réseau d'un compte (en particulier la date d'expiration d'un mot de passe)

Voilà donc toutes les explications à travers cet exemple pour connaitre la date d'expiration, le nom de la personne, la date de dernière connexion réseau, les tentatives de connexions infructueuses, etc ... de n'importe quel compte du réseau.

Source / Exemple :


Private Sub CmdGo_Click()

' nécessite que l'ADSI 2.5 (Active Directory Server Interface) soit installé
' (elle l'est automatiquement sous win2000, demande l'installation du driver adsi98.exe sous win9x)
' (à télécharger sur http://www.microsoft.com/Windows95/downloads/contents/WUOther/ADSI25/Default.asp)

' ADSI - SDK : registrer ADsSecurity.dll (fourni dans le zip) pour la programmation quelque soit votre version de Windows (pas nécessaire pour l'exécution)

' réferences projet à ajouter : Active DS Typer Library, ADsSecurity 2.5 Type Library

 
 Dim owinnt As ActiveDs.IADs
 Dim age_max As Long
 Dim age_pwd As Long
 Dim date_expi As String
  
 If TxtDomaine.Text = "" Or TxtLogin.Text = "" Then
    MsgBox "Nom de domaine et/ou de login non renseigné(s)", vbCritical, "INFORMATIONS MANQUANTES"
 Else
     On Error Resume Next
    Set owinnt = CreateObject("WinNT://" & TxtDomaine.Text & "/" & TxtLogin.Text)
    
    If Err = 429 Then
        ' login inexistant
        MsgBox "Le login " & TxtLogin.Text & " est inexistant dans le domaine " & TxtDomaine.Text, vbCritical, "LOGIN INCONNU"
        On Error GoTo 0
    Else
        ' les propriétés atteignables sont : LoginHours, Description, LoginScript, FullName, AccountExpirationDate
        ' BadPasswordAttempts, HomeDirDrive, HomeDirectory, LastLogin, LastLogoff, PasswordHistoryLength, LoginWorkstations
        ' MaxLogins, MaxPasswordAge, MaxStorage, MinPasswordAge, MinPasswordLength, PasswordAge, PasswordExpired
        On Error GoTo 0
        
        age_max = CLng(owinnt.Get("MaxPasswordAge")) / 60 / 60 / 24    ' durée de validité du mot de passe
        age_pwd = CLng(owinnt.Get("PasswordAge")) / 60 / 60 / 24       ' durée écoulée
        date_expi = CDate(Date + (age_max - age_pwd))
        MsgBox "Le login " & TxtLogin.Text & " expire le " & date_expi
    End If
End If

End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
15
<frop01> m'a aiguillé sur ta source pour un prob que j'avais avec ldap et w98se.
Même si je serai plus proche du commentaire de pour l'utilisation, je te met un 10 rien que pour ADsSecurity.dll et les commentaires et surtout parce que je suis super content d'avoir la solution que je cherchais depuis 3 jours.
Messages postés
54
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
30 juin 2004

salut,
j'ai justement travaillé sur ce problème récement et j'ai trouvé des exemples ressemblant au tiens.
le problème c'est que tu ne t'appui pas sur l'active directory mais sur le fichier "sam" qui est "l'ancien" système de gestion des utilisteurs sous NT
ca marchera ausi mas c bcp moins optimisé
il faut utiliser le LDAP pour accèder à l'active directory et mettre un code du genre :

Set owinnt = CreateObject("LDAP://OU=Utilisateurs,OU=tata,DC=entreprise_toto,DC=fr")

voila j'espère que ca pourra en aider qq uns @+ :o)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.