2016-08-23 10 views
0

AD 그룹 구성원을 확인하기위한 작은 응용 프로그램을 작성했습니다. 내 PC에서 다음 코드를 실행하면 잘 작동하지만 SearchResult에 "멤버"속성이 포함되어 있지만 서버 또는 다른 컴퓨터에서 동일한 exe를 실행하면 "멤버"속성이 누락됩니다. usnchanged와 usncreated도 달라집니다. 나는 모든 PC에서 같은 사용자와 exe를 실행합니다. 무엇이 이것을 일으킬 수 있습니까?DirectorySearcher와 다른 결과

... 
using (DirectorySearcher searcher = new DirectorySearcher()) 
{ 
    searcher.CacheResults = false; 
    searcher.Filter = "(&(objectClass=group)(cn=" + ADName + "))"; 
    searcher.SizeLimit = int.MaxValue; 
    searcher.PageSize = int.MaxValue; 
    if (!DirectoryEntry.Exists(ADPath)) 
    { 
     return null; 
    } 
    searcher.SearchRoot = new DirectoryEntry(ADPath); 
    using (SearchResultCollection collection = searcher.FindAll()) 
    { 
     if (collection.Count == 1) 
     { 
      return collection[0]; 
     } 
    } 
} 
... 
+0

그리고 ADPath에서 활성 디렉토리 서버를 가리 킵니까? – rene

+0

ADPath는 "GC : // DC = DOMAIN, DC = COMPANY, DC = com" –

답변

0

그룹 구성원 데이터는 글로벌 카탈로그로 복제되지 않습니다. 실제 구성원 데이터로 도메인 컨트롤러에 연결하는 경우 쿼리가 가끔 작동 할 수 있습니다. 다른 컴퓨터에서는 정보가없는 다른 도메인의 다른 도메인 컨트롤러에 연결하는 것이 좋습니다.

글로벌 카탈로그가 아닌 실제 도메인의 도메인 컨트롤러에 연결할 수 있습니다.

+0

맞습니다. 도메인 컨트롤러를 올바르게 지정하면 ADPath는 "GC : // Domain_Controller_IP/DC = DOMAIN"이됩니다. , DC = COMPANY, DC = com " 그러나 cmd에서 echo % LOGONSERVER %를 실행하면 서버에서 다른 로컬 컴퓨터보다 출력이 나오기 때문에 올바른 도메인 컨트롤러를 어떻게 결정할 수 있습니까? 그리고 만약 내가 다른 도메인에서 그것을 실행하면 컨트롤러도 다를 것입니다. 쉬운 방법은 ip를 하드 코드하는 것이지만, 나는 그것을 원하지 않습니다. –

+0

IP를 지정할 필요가 없습니다. "LDAP : // Domain_Controller_Address/DC = DOMAIN, DC = COMPANY, DC = com"과 같은 것을 사용할 수 있습니다. – Tomer

+0

좋습니다. 새 PrincipalContext (ContextType.Domain, DOMAIN) .ConnectedServer에 올바른 주소가 포함되어 있습니다. 빠른 지원에 감사드립니다! –