184 lines
6.0 KiB
VB.net
184 lines
6.0 KiB
VB.net
Imports Org.BouncyCastle.Asn1
|
|
Imports VERAG_PROG_ALLGEMEIN
|
|
|
|
Public Class frmADsearch
|
|
Dim dt As New DataTable()
|
|
Public activeDirectoryObj = New ADObject()
|
|
|
|
Public Sub New()
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
End Sub
|
|
|
|
Public Sub New(changelabel As String)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
lblUser.Text = changelabel
|
|
|
|
End Sub
|
|
|
|
|
|
Sub initDataTable()
|
|
|
|
dt.Columns.Add("sAMAccountName", GetType(String))
|
|
dt.Columns.Add("givenName", GetType(String))
|
|
dt.Columns.Add("sn", GetType(String))
|
|
dt.Columns.Add("distinguishedName", GetType(String))
|
|
dt.Columns.Add("department", GetType(String))
|
|
dt.Columns.Add("company", GetType(String))
|
|
dt.Columns.Add("adEntry", GetType(System.DirectoryServices.DirectoryEntry))
|
|
|
|
End Sub
|
|
|
|
Sub initDGV(dt As DataTable)
|
|
|
|
dgvAD.DataSource = dt
|
|
|
|
|
|
If dgvAD.Columns.Count > 0 Then
|
|
With dgvAD
|
|
.RowHeadersWidth = 10
|
|
|
|
.Columns("GivenName").HeaderText = "Firstname"
|
|
.Columns("GivenName").Width = 75
|
|
.Columns("sn").Width = 100
|
|
.Columns("sn").HeaderText = "Lastname"
|
|
.Columns("sAMAccountName").Width = 75
|
|
.Columns("sAMAccountName").HeaderText = "Account"
|
|
.Columns("department").Width = 75
|
|
.Columns("distinguishedName").HeaderText = "DN-Name"
|
|
.Columns("distinguishedName").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
|
.Columns("department").HeaderText = "Department"
|
|
.Columns("company").Width = 75
|
|
.Columns("company").HeaderText = "Company"
|
|
.Columns("adEntry").Visible = False
|
|
|
|
End With
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub GetActiveDirUserDetails(ByVal username As String, Optional LDAPString As String = "LDAP://DC=VERAG,DC=OST,DC=DMN")
|
|
|
|
dt.Clear()
|
|
|
|
Dim dirEntry As System.DirectoryServices.DirectoryEntry
|
|
Dim dirSearcher As System.DirectoryServices.DirectorySearcher
|
|
Try
|
|
dirEntry = New System.DirectoryServices.DirectoryEntry(LDAPString)
|
|
dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)
|
|
dirSearcher.Filter = " (&(objectClass=user)(objectCategory=person)(|(samAccountName=*" & username & "*)))"
|
|
|
|
Dim sr As DirectoryServices.SearchResultCollection = dirSearcher.FindAll()
|
|
If sr Is Nothing Then
|
|
lblHint.Text = "No Entries found"
|
|
Exit Sub
|
|
ElseIf sr.Count = 0 Then
|
|
lblHint.Text = sr.Count & " Entries found"
|
|
End If
|
|
|
|
For Each srEntry As DirectoryServices.SearchResult In sr
|
|
Dim de As System.DirectoryServices.DirectoryEntry
|
|
de = srEntry.GetDirectoryEntry()
|
|
|
|
Dim R As DataRow = dt.NewRow
|
|
R("givenName") = setNoNullableValue(de.Properties("givenName").Value)
|
|
R("sn") = setNoNullableValue(de.Properties("sn").Value)
|
|
R("sAMAccountName") = setNoNullableValue(de.Properties("sAMAccountName").Value)
|
|
R("department") = setNoNullableValue(de.Properties("department").Value)
|
|
R("distinguishedName") = setNoNullableValue(de.Properties("distinguishedName").Value)
|
|
R("company") = setNoNullableValue(de.Properties("company").Value)
|
|
R("adEntry") = de
|
|
dt.Rows.Add(R)
|
|
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
lblHint.Text = ex.Message
|
|
End Try
|
|
End Sub
|
|
|
|
Public Shared Function GetUsersInGroup(ByVal groupname As String, Optional ByVal LDAP As String = "LDAP://DC=VERAG,DC=OST,DC=DMN") As List(Of String)
|
|
Dim Userlist As New List(Of String)
|
|
|
|
Dim locDirectoryEntry As New DirectoryServices.DirectoryEntry(LDAP)
|
|
Dim Searcher As New DirectoryServices.DirectorySearcher(locDirectoryEntry, "sAMAccountName=" & groupname)
|
|
Dim Result As DirectoryServices.SearchResult = Searcher.FindOne
|
|
|
|
If Result IsNot Nothing Then
|
|
For Each User In Result.Properties("Member")
|
|
Userlist.Add(User)
|
|
Next
|
|
End If
|
|
Return Userlist
|
|
End Function
|
|
|
|
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
|
|
|
|
lblHint.Text = ""
|
|
|
|
If cboDomain._value = "" Then
|
|
lblHint.Text = "Domain auswählen"
|
|
Exit Sub
|
|
End If
|
|
|
|
If txtUser.Text = "" Then
|
|
lblHint.Text = "User eingeben!"
|
|
Exit Sub
|
|
End If
|
|
GetActiveDirUserDetails(txtUser.Text)
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub frmADsearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
cboDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAGOST", "LDAP://DC=VERAG,DC=OST,DC=DMN"))
|
|
cboDomain.changeItem("verag.ost.dmn")
|
|
initDataTable()
|
|
initDGV(dt)
|
|
End Sub
|
|
|
|
Private Sub btnUebernehmen_Click(sender As Object, e As EventArgs) Handles btnUebernehmen.Click
|
|
|
|
For Each row As DataGridViewRow In dgvAD.SelectedRows
|
|
activeDirectoryObj = New ADObject With {
|
|
.domain = cboDomain.Text,
|
|
.ADEntry = IIf(IsDBNull(row.Cells("adEntry").Value), "", row.Cells("adEntry").Value)
|
|
}
|
|
|
|
Next
|
|
|
|
End Sub
|
|
|
|
Public Function setNoNullableValue(value As String) As String
|
|
|
|
If value IsNot Nothing Then
|
|
If value <> "" Then
|
|
Return value
|
|
End If
|
|
End If
|
|
Return ""
|
|
|
|
End Function
|
|
|
|
Private Sub txtUser_KeyDown(sender As Object, e As KeyEventArgs) Handles txtUser.KeyDown
|
|
If e.KeyCode = Keys.Enter Then
|
|
btnSearch_Click(sender, e)
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
Public Class ADObject
|
|
|
|
Public Sub New()
|
|
End Sub
|
|
|
|
Public Property domain As String
|
|
Public Property ADEntry As System.DirectoryServices.DirectoryEntry
|
|
|
|
End Class |