Mit dieser Funktion ist man in der Lage, alle Computer in der gegenwärtigen Domäne aus dem LDAP, mittels ADSI (ADSI = Active Directory Service Interface) auszulesen und in einem StringArray zurückzugeben.
Um diese Funktion auszuführen, müssen folgende Verweise eingefügt werden:
- Microsoft ActiveX Data Objects 2.5 Libary
- Active DS Type Libary
Quellcode:
Public Function AllComputers() As String()
Dim conn As New Connection
Dim rs As RecordsetDim Root As IADs
Dim Domain As IADs
Dim strBase As String
Dim strFilter As String
Dim strDomain As String
Dim strAttr As String
Dim strDepth As String
Dim strQuery As String
Dim strPC() As String
Dim nElement As Integer
On Error GoTo ErrHandler
ReDim strPC(0) As String
‘ Pfad der gegenwärtigen Domäne (LDAP) einholen
Set Root = GetObject(“LDAP://rootDSE”)
strDomain = Root.Get(“defaultNamingContext”)
Set Domain = GetObject(“LDAP://” & strDomain)
‘ LDAP Base DN setzen
strBase = “<” & Domain.ADsPath & “>”
‘ Filter auf die Kategorie Computer setzen
strFilter = “(&(objectCategory=Computer))”
‘ Attribut setzen
strAttr = “name”
‘ Suchtiefe setzen
strDepth = “subTree”
‘ Abfrage zusammen setzen
strQuery = strBase & “;” & strFilter & “;” & strAttr & “;” & strDepth
‘ Verbindung öffnen
conn.Open “Data Source=Active Directory Provider;Provider=ADsDSOObject”
‘ Query ausführen
Set rs = conn.Execute(strQuery)
Do While Not rs.EOF
If strPC(0) = “” Then
nElement = 0
Else
nElement = nElement + 1
End If
‘ das Array Redimensionieren
ReDim Preserve strPC(nElement) As String
‘ Den Computernamen in das Array schreiben
strPC(nElement) = rs(“name”)
rs.MoveNext
Loop
‘ Das StringArray zurückgeben
AllComputers = strPC
If rs.State <> 0 Then rs.Close
If conn.State <> 0 Then conn.Close
‘ Error Handling
ErrHandler:
On Error Resume Next
AllComputers = strPC
Set rs = Nothing
Set conn = Nothing
Set Root = Nothing
Set Domain = Nothing
End Function
|
Beispiel für den Auruf der Funktion:
Private Sub Command1_Click()
Dim strA() As String
Dim lI As LongstrA = AllComputers
If Not strA(0) = “” Then
For lI = 0 To UBound(strA)
Debug.Print strA(lI)
Next
End If
End Sub
|
Sie können hier bei vbarchiv.net für mich voten!
Tags: Active Directory Service Interface, ADSI, LDAP, Microsoft Visual Studio, VB 6.0, Visual Basic
1 Kommentar »
am 7. Januar 2010 um 11:40 1.Gadgets, IT-Projekte, Programmierung und mehr » Benutzer der gegenwärtigen Domäne auslesen schrieb …
[…] Mit dieser Funktion ist man in der Lage, alle Benutzer und deren angelegte Daten in der gegenwärtigen Domäne aus dem LDAP, mittels ADSI (ADSI = Active Directory Service Interface) auszulesen und in einem StringArray zurückzugeben. Eine andere Funktion, die sich ebenfalls mit dem Auslesen des LDAP beschäftigt, findet ihr hier: Computer der gegenwärtigen Domäne auslesen. […]