2010-12-31 9 views
1

사용자가 8 명인 "CommonUsers"라는 그룹 이름을 가진 Active Directory 도메인 이름 'ADDOMAIN2'를 만들었습니다. 그룹 "CommonUsers"의 사용자에 대해 디렉토리 검색을 수행하면 0 결과가 반환됩니다. 그녀의 코드는 내 코드Active Directory 그룹에서 사용자 가져 오기

 DirectorySearcher searcher = new DirectorySearcher(); 
     DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("LDAP://{0}", "ADDOMAIN2"), "Administrator", "[email protected]$w0rd"); 
     string dnPath = directoryEntry.Properties["distinguishedName"].Value.ToString(); 

     // string path = string.Format("LDAP://{0}/{1}{2}", "ADDOMAIN2", "", dnPath); 
     string path = "LDAP://ADDOMAIN2/CN=CommonUsers,DC=ADDomain2,DC=ADDomain01,DC=WaveDomain"; 
     directoryEntry.Path = path; 
     searcher.SearchRoot = directoryEntry; 
     searcher.Filter = "(&(objectCategory=person)(objectClass=user))"; 
     SearchResultCollection rs = searcher.FindAll(); 

어떤 아이디어가 잘못 되었나요?

고맙습니다

+0

내 대답을 확인 했습니까? 도움이 되었습니까? 어떤 코멘트? –

답변

0

쿼리 문자열이 정말 올바른 위치를 가리키는 여부를 확인하기 위해 (이전 및 무료 버전 Softerra LDAP Browser의 2.6 같은) 일부 외부 LDAP 브라우저를 사용해보십시오.

0

DirectorySearcher는 그룹 내의 사용자를 찾는 데 사용되지 않습니다. 기본 경로 아래에서 객체를 찾는 데 사용됩니다. AD 그룹 개체 아래에 사용자 개체가 없기 때문에 아무 것도 찾을 수 없습니다.

대부분의 경우 멤버 속성에서 AD 그룹에있는 사용자 개체를 찾을 수 있습니다. AD 그룹에는 그룹이나 사용자가 포함될 수 있습니다. 그래서, 거기 엔 entres 중 일부는 그룹이있을 수 있습니다. 경우에 따라 구성원 특성에 AD 그룹이나 AD 사용자가 없으며 외부 보안 주체가 포함되어 있습니다. 사용자가 다른 포리스트에서 오는 경우 이런 일이 발생합니다. 기본 그룹도 다르게 처리됩니다. "도메인 사용자"조차도 AD에있는 대부분의 사용자의 기본 그룹이며 구성원 속성에는 아무 것도 포함되어 있지 않습니다. AD 그룹 개체를 열심히 열거하게 만드는 많은 다른 이상한 점이 있습니다.

다행히 .NET 3.5에서 Microsoft는 더러운 작업을 수행하는 데 유용한 몇 가지 클래스를 프레임 워크에 제공합니다. 몇 가지 빠른 예를 얻으려면

System.DirectoryServices.AccountManagement을 확인, 당신은 article

귀하의 코드는 다음과 같이해야이 CodeProject의를 확인할 수 있습니다.

PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com"); 
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Users"); 
foreach (Principal principal in groupPrincipal.GetMembers(false)) 
{ 
    Console.Out.WriteLine(principal.DistinguishedName); 
} 
Console.In.ReadLine(); 
관련 문제