2011-04-22 5 views
1

hereC#을 사용하여 사용자 세부 정보를 검색하기 위해 Active Directory에 연결

에서 활성 디렉토리로 사용자를 가져 오는 방법에 대한 기사를 찾았습니다. 아마도이 코드는 다음과 같습니다.

String strPath = "format of this path"; 
DirectoryEntry entry = null; 
entry = new DirectoryEntry(strPath); 

DirectorySearcher mySearcher = new DirectorySearcher(entry); 

mySearcher.Filter = ("ObjectCategory=user"); 

foreach (SearchResult result in mySearcher.FindAll()) 
{ 
    String strName = result.GetDirectoryEntry().Name; 
    //Do whatever 
} 

strPath를 설명해주십시오. 이것의 형식은 무엇입니까 ??

참고 : 테스트를 위해 내 서버 정보가 내 로컬 IP "198.168.1.182"를 사용하여 얻을 수 있음을 알고 있습니다.

내가 생각하는 방식이 맞는지 확실하지 않습니다.

도와주세요!

답변

5

.NET 4를 사용 중이므로 System.DirectoryServices.AccountManagement (S.DS.AM) 네임 스페이스를 확실히 확인해야합니다. 여기에 대한 모든 읽기 :

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

// find user by name 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "John Doe"); 

// if we found user - inspect its details 
if(user != null) 
{ 
    string firstName = user.GivenName; 
    string lastName = user.Surname; 
    string email = user.EmailAddress; 
    string phone = user.VoiceTelephoneNumber; 
} 

새로운 S.DS.AM 그것을 만드는 :

기본적으로 Managing Directory Security Principals in the .NET Framework 3.5

, 당신은 AD에서 사용자 및/또는 그룹을 쉽게 찾을 도메인 컨텍스트를 정의 할 수 있습니다 광고에서 사용자 및 그룹과 놀기가 정말 쉽습니다.

+0

marc_s가 답을 완성하지 못했습니다. FindyByIntenty 메서드는 최소한 두 개의 인수가 필요합니다. 주요 컨텍스트 개체 "ctx"는 첫 번째 인수 여야합니다. – user55513

+0

@jdmorris : 감사합니다. 내 대답은 절대적으로 올바른 것입니다. –

+1

고맙습니다. 나는 하루 종일 해결책을 찾고 있었다. 이로 인해 작업이 매우 간단하고 쉬워졌습니다. – Ahmad

1

strPath 더 많은 정보는 여기에서 찾을 수 있습니다 된 LDAP의 URL입니다.

관련 문제