2017-09-10 10 views
-1

DirectoryEntry 클래스를 사용 중입니다.C#, DirectoryEntry에서 OU 액세스 가능성을 확인하는 방법?

특정 OU 및 하위 OU에서 모든 사용자를 읽으려고합니다.

다음 코드는 하위 OU의 일부가 현재 사용자에 대한 읽기로부터 보호

using(DirectoryEntry dEntry = new DirectoryEntry(dn)) 
using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry)) 
{ 
    dSearcher.SearchScope = SearchScope.Subtree; 
    dSearcher.Filter = "(&(objectClass=user) (objectCategory=person))"; 
    foreach(SearchResult in dSearcher.FindAll()) 
    { 
     //Do something... 
    } 
} 

태스크의 일부입니다. 그리고 "하나 이상의 오류 accured"작업 예외가 발생했습니다 OU에 액세스 할 수 있는지 확인하고 건너 뛰는 방법을 찾고 있어요. 그리고 해당 OU를 기록하십시오.

public void GetOu(List<MyUser> list, string path) 
{ 
    using (DirectoryEntry dEntry = new  DirectoryEntry(path)) 
    using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry)) 
    { 
      dSearcher.SearcherScope = SearchScope.Subtree; 
      dSearcher.Filter = "(objectClass=organizationalUnit)"; 
      foreach(SearchResult result in dSearcher.FindAll()) 
      { 
       GetUsersFromOU(list,result.GetDirectoryEntry()); 
      } 
     } 
} 
public void GetUsersFromOU(List<MyUser> list,DirectoryEntry ou) 
{ 
    using (DirectorySearcher dSearcher = new DirectorySearcher(ou); 
    dSearcher.SearchScope = SearchScope.OneLevel; 
    dSearcher.Filter = "(&(objectClass=user)(objectCategory=person))"; 
    foreach (Search result in dSearcher.FindAll()) 
     { 
      //Do something.... update list... 
     } 
} 

지금 예외를 얻을 접근 OU를하지 건너 뜁니다 : 나는 다음 시도했다. 1. "잘못된 ou"가 무엇인지 찾을 수 없습니다. 2. 실행 시간이 깁니다 ...

+0

액세스 할 수 없다는 것은 무엇을 의미합니까? 존재하지 않는다는 뜻입니까? – w0051977

답변

0

프로세스를 실행하는 사용자에게 해당 프로세스를 수행 할 수있는 적절한 권한이 있는지 확인해야합니다 조회. 이것은 데스크톱 응용 프로그램의 Windows 계정과 ASP.NET 응용 프로그램의 응용 프로그램 풀을 실행하는 계정입니다.

+0

그 요점은, 나는 사용자가 실행중인 응용 프로그램이 특정 OU에 대한 권한을 갖고 있는지 확신 할 수 없습니다. 그래서 "액세스 거부"를 수집해야합니다. OU에 액세스 할 수 있는지 여부를 알 수있는 방법이 필요합니다. 사용자는 IIS에 의해 정의됩니다. –

+0

AD (C#을 통해)를 사용하는 경우 반드시 관리자 계정을 사용해야합니다. – w0051977

+0

이 질문은 도움이 될 수 있습니다. https://stackoverflow.com/questions/2810613/how-to-find-all-groups-in-activedirectory-where-the-current-user-has-writepropert – w0051977