Bonjour tout le monde
voici une petite application qui effectue une recherche des objets (Comptes utilisateurs humains du système) par des requettes dans AD et permet de lister les noms des comptes ainsi de vérifier les informations de login (Mot de passe)
Grace a ce code, on peut proteger nos application par l'authentification intégrée du système d'exploitation.
Source / Exemple :
Imports System.Management
Imports System.DirectoryServices
Public Class frmMain
Private Sub GetSystemUsers()
Me.Cursor = Cursors.WaitCursor
Try
'Lecture du nom de domaine
Dim localdomain As String = GetDomain()
'Lecture du nom de la machine.
Dim localpc As String = Environment.MachineName
Me.lblDomainName.Text += localdomain
Me.lblMachineName.Text += localpc
Application.DoEvents()
'Si le nom de domaine est unconnu.
If localdomain = String.Empty Then
'L'objet dirEntry est un composant ajouté depuis le toolBox (Juste pour une info de +).
dirEntry.Path = "WinNT://" + localpc
Else
dirEntry.Path = "WinNT://" + localdomain + "/" + localpc
End If
For Each child As DirectoryEntry In dirEntry.Children
'Prendre les utilisateurs humains de la machine
If child.SchemaClassName = "User" Then
Me.cbxUsers.Items.Add(child.Name)
End If
Next
Catch ex As Exception
MessageBox.Show("Erreur:" + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Me.Cursor = Cursors.Default
End Sub
Private Function GetDomain() As String
Try
'Requette de recheche sur les informations du système.
Dim squery As String = "SELECT * FROM Win32_ComputerSystem"
'Création d'un objet Management Searcher.
Dim mgmtsearch As New ManagementObjectSearcher(squery)
'Recherche l'entrée Domain dans la liste des infos système.
For Each item As ManagementObject In mgmtsearch.Get()
Return item("Domain").ToString()
Next
Return String.Empty
Catch
Return String.Empty
End Try
End Function
Private Sub Connect(ByVal userName As String, ByVal password As String)
Try
Dim de As New DirectoryEntry("LDAP://localhost/CN=Users;DC=" + lblDomainName.Text, lblDomainName.Text + "/" + userName, password, AuthenticationTypes.Secure)
Dim test As Object = de.NativeObject ' Si cette propriété peut etre lu, donc les informations de connexion sont correctes.
MessageBox.Show("Salut " + userName, "Authentication réussite", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch e As Exception
MessageBox.Show(e.Message, "Erreur:", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Connect(cbxUsers.Text, txtPassword.Text)
End Sub
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Me.Close()
Application.Exit()
End Sub
Private Sub frmMain_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
GetSystemUsers()
End Sub
End Class
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.