2011-05-11 2 views
2

현재 WinNT 도메인에서 DirectorySearcher가 지원되지 않으므로 주어진 WinNT 도메인의 컴퓨터를 찾으려면 다음 코드를 사용하고 있습니다.DirectoryEntry 하위 항목을 열거하면 WinNT 도메인에서 20 개의 결과 만 반환하는 이유는 무엇입니까? C#

protected void ScanDomain(string domainName, bool isLocalDomain) 
{ 
    DirectoryEntry parentEntry = new DirectoryEntry(); 

    if(isLocalDomain) 
    { 
     try 
     { 
      parentEntry.Path = "WinNT://" + domainName; 

      int numResults = 0; 
      foreach (DirectoryEntry childEntry in parentEntry.Children) 
      { 
       switch (childEntry.SchemaClassName) 
       { 
        case "Computer": 
         Debug.WriteLine(childEntry.Name); 

         numResults++; 
         break; 
       } 
      } 

      if (numResults == 0) 
      { 
       Debug.WriteLine("No results."); 
      } 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine("Failed."); 
     } 
    } 
    else 
    { 
     //... 
    } 
} 

그러나이 방법을 사용하면 도메인에있는 것보다 컴퓨터가 더 많음을 알고 있지만 20 개의 컴퓨터 결과 만 수신합니다.

그래서 내가 왜이 사람인지 전혀 알지 못했습니까?

+1

여기에 코드를 실행했는데 컴퓨터 결과 20 개가 넘었습니다. 어딘가에 제한이있을 수 있습니다. 우리의 도메인은 Windows Server 2000 (또는 아마도 2003?) 기능 수준입니다. – tjrobinson

+0

흥미 롭습니다. 내 네트워크에 몇 가지 제한이있을 수 있습니다. – Avilan

+0

컨테이너 인 모든 하위 개체를 검색해야한다고 생각합니다. 제대로 기억한다면 컴퓨터 계정이 그 자식 개체 안에 있으면 루트에 표시되지 않으며 WinNT 또는 LDAP 도메인에 상관없이 적용됩니다. (죄송합니다. 조금 애매합니다.이 일을한지 오래되었습니다 ...) –

답변

0

디렉토리 항목은 특정 노드의 하위 항목을 반환합니다. 이것은 노드 아래에 노드를 포함하지 않을 것이고, 그것의 그랜드 아이들을 의미합니다. 그랜드 아이들도 확인해보십시오. 그리고 WIN NT 아래의 모든 노드가 작동합니다.

코드 스 니펫을 원하면 알려주십시오. 아니면 내 편에서 어떤 것도 놓치고 있습니다.