2010-07-08 6 views
0

Active Directory를 쿼리하기 위해 System.DirectoryServices.AccountManagement 클래스를 사용하고 있습니다.Sys.AD.AM.Net 3.5를 사용할 때 글로벌 카탈로그의 Active Directory 검색

다양한 컨텍스트를 사용하여 도메인을 쿼리 할 수 ​​있지만 찾은 모든 예에서는 도메인 이름이 필요합니다.

string domain = "MYDOMAIN"; 
PrincipalContext ctx= new PrincipalContext(ContextType.Domain, domain); 

일반적으로 이것은 문제가되지 않지만 우리는 하위 도메인에있는 일부 사용자가 있습니다. user.identity.name에서 도메인 정보를 구문 분석하여 계정 세부 정보를 검색 할 수있는 방법을 찾았습니다.

string loggedUser = User.Identity.Name; 
string domain = loggedUser.Split(new char { '\\' })[0]; 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain); 
using (ctx) { 
    // Do searches, etc. here 
} 

내가 GUID를 모든 도메인에서 고유한지 믿을 리드 나처럼 이름 (결혼, 이혼 등)

을 변경할 수 있습니다 반면 우리는, 우리의 고유 식별자로 GUID를 사용하는 이상 교환을 기대했다

이전 디렉토리 검색기 웹 서비스를 사용하면 도메인이 신뢰할 수 있기 때문에 글로벌 카탈로그 (GC)를 쿼리하고 해당 도메인이나 하위 도메인에 상관없이 사용자를 찾을 수 있습니다 ... 동일한 ' 새로운 3.5 S.DS.AM 클래스를 사용하는 GC 검색의 '기능'을 제공합니다. 심지어 가능할까요?

var principalContext = new PrincipalContext(ContextType.Domain); 

을하지만 그게 도움이되지 않습니다

답변

0

첫째, 도메인이 필요하지 않습니다. 도메인 목록을 작성해야한다고 생각합니다. 그런 다음 S.DSAM을 사용하여 각 도메인을 검색 할 수 있습니다. S.DS.ActiveDirectory Forest 개체를 사용하여 도메인 목록을 작성할 수 있습니다. 또는 GC : // 모니 커를 사용하여 S.DS.DirectorySearcher를 사용하여 GC 검색을 수행 할 수 있습니다.