2012-03-12 3 views
1

DirectorySearcher를 실행해도 항상 결과가 성공적으로 반환되지 않는 문제가 있습니다. 예를 들어, 내가 문자열 (NativeGuid)을 변환하려면 다음 방법을 사용하여 내 관리자의 GUID에 보내드립니다 :.net에서 nativeguid를 사용하여 Active Directory에서 사용자를 찾는 방법은 무엇입니까?

public static string Guid2OctetString(string objectGuid) 
{ 
    System.Guid guid = new Guid(objectGuid); 
    byte[] byteGuid = guid.ToByteArray(); 
    string queryGuid = ""; 
    foreach (byte b in byteGuid) 
    { 
     queryGuid += @"\" + b.ToString("x2"); 
    } 
    return queryGuid; 
} 

이 가정으로 Active Directory에 의해 사용할 수있는 무언가에 GUID 문자열을 변환합니다. 관리자의 NativeGuid을 실행하면 결과가 나옵니다. 그런데 응용 프로그램의 다음 단계에서 directReports Guids 중 하나를 동일한 방식으로 실행하지만 아무 결과도 얻지 못합니다. 사용자가 존재하고 내가 DirectoryEntry을 당겨도 항목을 얻을 수 있지만 처리가 너무 느리기 때문에 전체 항목을 원하지 않습니다. 이 일을 빠르게하기 위해 DirectorySearcher을 사용하여 필드를 좁힐 수 있어야합니다. 어떤 사용자의 디렉토리 검색에 왜 거위 알을 낳는 지 아이디어가 있습니까?

답변

1

.NET 3.5 이상인 경우 System.DirectoryServices.AccountManagement (S.DS.AM) 네임 스페이스를 확인해야합니다. 여기에 대한 모든 읽기 :

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find a user 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.Guid, YourGuid.ToString()); 

if(user != null) 
{ 
    // do something here....  
} 

을 : MSDN docs on System.DirectoryServices.AccountManagement

기본적으로

+1

멋진 답변과 함께 좋은 +1 답변을드립니다. – Stefan

+0

고맙습니다. 실제로 익숙합니다. 그러나 기본 속성 집합은 제한적입니다. 관리자에게 직접 액세스해야하며 모든 직접 보고서, 그룹 회원 및 AD에있는 사진이 필요합니다. 이 도우미 클래스에는 이러한 속성이있는 것 같지 않으며 클래스를 확장해야합니다. searcher를 사용하여 GUID 조회를 통해 진행되는 작업을 쉽게 파악할 수있는 것처럼 느껴집니다. – Sinaesthetic

관련 문제