- 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
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