vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Microsoft Technical Submit  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.5  | Shop Copyright ©2000-2008
 
zurück
Rubrik: System/Windows · Computer/Benutzer/Ländereinstellungen   |   VB-Versionen: VB602.12.05
Computer der gegenwärtigen Domäne auslesen

Alle Namen der Computer der gegenwärtigen Domäne (LDAP) auslesen

Autor:   Dennis HemkenBewertung:     [ Jetzt bewerten ]Views:  7.167 
www.hemken.orgSystem:  WinXP Beispielprojekt auf CD 

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 Recordset
 
  Dim 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 Long
 
  strA = AllComputers    
  If Not strA(0) = "" Then
    For lI = 0 To UBound(strA)
      Debug.Print strA(lI)
    Next
  End If
End Sub

Dieser Tipp wurde bereits 7.167 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.5
(einschl. Beispielprojekt!)

Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2008 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.

Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel