vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Code mit mit Active Directoryabfrage von VB6 nach VB.NET migrieren. Hilfe !?! 
Autor: Zidane1x
Datum: 15.06.09 15:06

Tach zusammen,

ich hab hier im Bereich Tipps & Tricks einen sehr netten VB6 Code gefunden den ich sehr gerne unter VB.NET (2005) zum laufen bekommen würde, allerdings haperts da bei mir

http://www.vbarchiv.net/tipps/tipp_1518.html

Hier der Code:

Public Function AllUsers(ByVal strAttr As String) As String()
  ' ###################################################################
  ' Hier sind noch einige Attribut-Beispiele
  ' strAttr = "name"  oder strAttr = "cn"   Vorname (Bsp: Peter)
  ' strAttr = "sn"                          Name (Bsp: Müller)
  ' strAttr = "samaccountName"              Kuerzel (Bsp: hede)
  ' strAttr = "telephoneNumber"             Telefon (Bsp: 0815/123)
  ' strAttr = "mail"                        Email (Bsp: asdfg@asdfg.de)
  ' strAttr = "title"                       Titel (Bsp: Dr.)
  ' strAttr = "homeDrive"                   Home-Verzeichnis (Bsp: H:)
  ' strAttr = "physicalDeliveryOfficeName"  Raumnummer (Bsp: C 120)
  ' strAttr = "company"                     Firma (Bsp: Firma GmbH)
  ' strAttr = "postalCode"                  PLZ (Bsp: 12345)
  ' strAttr = "st"                          Bundesland (Bsp: NRW)
  ' strAttr = "streetAddress"               Strasse (Bsp: Am Wald 9a)
  ' strAttr = "l"                           Stadt (Bsp: Köln)
  ' strAttr = "department"                  Abteilung (Bsp: IT)
  ' ###################################################################
  Dim conn As New ADODB.Connection
  Dim Rs As ADODB.Recordset
 
  Dim Root As IADs
  Dim Domain As IADs
 
  Dim strBase As String
  Dim strFilter As String
  Dim strDomain As String
 
  Dim strDepth As String
  Dim strQuery As String
  Dim strUser() As String
  Dim iElement As Integer
 
  ' Fehlerbehandlung aktivieren
  On Error GoTo ErrHandler
 
  ReDim strUser(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 Person und Klasse User setzen
  strFilter = "(&(objectCategory=person)(objectClass=user))"
 
  ' falls kein Attribut übergeben wurde, wird es auf ein
  ' beliebiges Standard gesetzt, Bsp: name
  If strAttr = "" Then 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)
 
  With Rs
    Do While Not .EOF
      On Error Resume Next
      If strUser(0) = "" Then
        iElement = 0
      Else
        iElement = iElement + 1
      End If
 
      ' das Array Redimensionieren
      ReDim Preserve strUser(iElement) As String
 
      ' Das ausgewählte Attribut (hier: "mail"->Funkstionsübergabe)
      ' in das Array schreiben
      strUser(iElement) = Rs.Fields(strAttr)
 
      .MoveNext
    Loop
  End With
 
  If Rs.State <> 0 Then Rs.Close
  If conn.State <> 0 Then conn.Close
 
ErrExit:
  ' Das StringArray zurückgeben
  AllUsers = strUser
 
  ' Objekte schließen und zerstören
  On Error Resume Next
  Rs.Close
  conn.Close
  Set Rs = Nothing
  Set conn = Nothing
  Set Root = Nothing
  Set Domain = Nothing
  Exit Function
 
ErrHandler:
  Resume ErrExit
End Function
Private Sub Command1_Click()
  Dim strA() As String
  Dim i As Long
 
  ' Funktionsaufruf mit dem Attribut "mail"
  strA = AllUsers("mail")
  If Not strA(0) = "" Then
    For i = 0 To UBound(strA)
      Debug.Print strA(i)
    Next
  End If
End Sub
Bisher habe ich nur ein paar kleine Änderung vorgenommen damit ich das Programm im Debug-Modus starten kann. Allerdings hängt sich die Anwendung auf. Kann mir vll. jmd helfen den COde VB.NET tauglich zu machen?

Achja und wie lautet hier die korrekte Angabe:

  ' Pfad der gegenwärtigen Domäne (LDAP) einholen
  Set Root = GetObject("LDAP://rootDSE")
  strDomain = Root.Get("defaultNamingContext")
  Set Domain = GetObject("LDAP://" & strDomain)
Was muss für rootDSE und was für defaultNamingContext eingeben? Unsere Domaine ist wie folgt aufgebaut: firmennname.intra.local



MFG
Zidane1x
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Code mit mit Active Directoryabfrage von VB6 nach VB.NET mig...1.029Zidane1x15.06.09 15:06
Re: Code mit mit Active Directoryabfrage von VB6 nach VB.NET...560ModeratorFZelle15.06.09 17:52
Re: Code mit mit Active Directoryabfrage von VB6 nach VB.NET...550Zidane1x18.06.09 13:42
Re: Code mit mit Active Directoryabfrage von VB6 nach VB.NET...537ModeratorFZelle18.06.09 14:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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