Search code examples
vb.netdirectorylotus-domino

Retrieve Lotus Notes Domino directoy groups and users


Using Studio 2013 VB.

I am attempting to retrieve group members from our Lotus Notes Domino directory - but I cannot get past this error: "A protocol error occurred. Failed, invalid authentication method specified." I was assuming (maybe incorrectly) that this could be done using DirectorySearcher as we do for our Active Directory.

I have tried retrieving various data with the same results. My research seems to indicate a problem with the ldapsettings but I am using the same alias and specific ldapsettings used by other in-house scripts (albeit written in perl). So the ldapsettings still might be the problem.

The line of code that fails is:

Dim result As SearchResult = searcher.FindOne

The value of searcher.Filter is (&(objectclass=dominoGroup)(cn=mydominogroup)) So this looks like it is build right.

Any help with errors in my code - or even suggestions to accomplish this task a better way are appreciated.

Here is my code:

dim grp as String = "mydominogroup"
Using dEntry As New DirectoryEntry("LDAP://mycompanyldapsettings")
   dEntry.Username = myadminaccount
   dEntry.Password = myadminpassword

   Using searcher As New DirectorySearcher(dEntry)
      searcher.Filter = String.Format("(&(objectclass=dominoGroup)(cn={0}))", grp)
      Dim result As SearchResult = searcher.FindOne <--fails here
      If result Is Nothing Then
          "report group not found"
      Else
           Dim members As Object = result.GetDirectoryEntry.Invoke("Members", Nothing)
           If members Is Nothing Then
               "report no members found in group"
           Else
               For Each member As Object In CType(members, IEnumerable)
                  Dim currentMember As New DirectoryEntry(member)
                  If currentMember.SchemaClassName.ToLower = "user" Then
                        Dim props As PropertyCollection = currentMember.Properties
                        "get and list the user pros("someattribute").Value)"
                  End If
               Next
           End If
      End If
   End Using
End Using

Solution

  • Decided to call an external Process to solve this.