Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Query Active Directory

Posted on 2004-09-15
5
Medium Priority
?
609 Views
Last Modified: 2008-05-30
I need to query Active Directory using ASP.NET / VB.NET to find all groups in the AD that a user is a member of.  I can use this code to return some information.  I want to return the list of groups as an array that I can then search through to find specific Groups that belong to that user.

        Dim entry As New DirectoryServices.DirectoryEntry("LDAP://int.domain.net")
        Dim mySearcher As New System.DirectoryServices.DirectorySearcher(entry)
        Dim result As System.DirectoryServices.SearchResult
        mySearcher.Filter = ("(anr= jdoe)")

        For Each result In mySearcher.FindAll()
            Response.Write(result.GetDirectoryEntry().Path)
        Next

Thanks for the help.
0
Comment
Question by:Fred Goodwin
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 5

Expert Comment

by:jmacmicking
ID: 12074065
Why not open the user's account in AD directly?  For instance:

Set oUser = GetObject("LDAP://cn=Doe John, ou=IS, dc=int, dc=domain, dc=net")
For Each oGroup in oUser.Groups
    Response.Write(oGroup.Path)
Next

That's assuming you have the LDAP name of the user; if not you can use the WinNT provider (it works just as well for getting group names).  The line looks like this:

Set oUser = GetObject("WinNT://domain/" & username)

This should be a lot faster then user the search function.  If you need help putting these in an array as well let me know.
0
 
LVL 7

Author Comment

by:Fred Goodwin
ID: 12074512
is that classic asp or asp.net?

When I try this I get the following error.
**********************************  ERROR ***************************
Public member 'Path' on type '_ComObject' not found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMemberException: Public member 'Path' on type '_ComObject' not found.

********************************* END ERROR *************************

It gives that error on the line
response.Write(oGroup.Path)

Any ideas?
Thanks
0
 
LVL 5

Accepted Solution

by:
jmacmicking earned 2000 total points
ID: 12074957
I'm sorry; that should be oGroup.Name; don't know why I typed .path.
0
 
LVL 7

Author Comment

by:Fred Goodwin
ID: 12075438
Ok the code works exactly as I wanted.  Thank you.  

I know you have them as objects but do oUser and oGroup have a defined data type?

Thanks
0
 
LVL 5

Expert Comment

by:jmacmicking
ID: 12076376
IADsUser and IADsGroup, respectively.  Part of the ActiveDS type library.  Out of curiousity I did a quick search to find the equivilant in .NET and found this tutorial on MSDN, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sds/sds/enumerating_user_memberships.asp, that does exactly what you want user the DirectoryEntry object of .NET.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Group policies can be applied selectively to specific devices with the help of groups. Utilising this, it is possible to phase-in group policies, over a period of time, by randomly adding non-members user or computers at a set interval, to a group f…
Here's a look at newsworthy articles and community happenings during the last month.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question