2010-11-30 4 views
1

ODBC를 사용하여 활성 디렉토리에서 데이터를 가져 와서 아래 코드를 사용하여 특정 사용자 이름에 대한 전자 메일을 가져옵니다.C# ActiveDir을 사용하여 관리자 조직도에서 이름을 얻으시겠습니까?

어떻게 광고를 사용하여 prticular 관리자로 신고하는 peolel의 모든 사용자 이름을 가져올 수 있습니까?

나는 같은 사용하여 AD를 할 수있는 전망 그렇게 생각 메신저의 조직도 ...

아이디어를 횡단 할 수 있습니까?

System.Data.OleDb.OleDbConnection con; 
     System.Data.OleDb.OleDbCommand cmd; 

     con = new System.Data.OleDb.OleDbConnection("Provider=ADsDSOObject;dsn=Active Directory Provider"); 
     con.Open(); 

     //Create a command object on this connection 
     string strSQL = "SELECT mail FROM 'LDAP://DC=amrs,DC=win,DC=ml,dc=COM' WHERE samaccountname = '" + UserName.Replace(@"AMRS\", "") + "'"; 
     cmd = new System.Data.OleDb.OleDbCommand(strSQL, con); 

     try 
     { 
      return Convert.ToString ( cmd.ExecuteScalar()); 
     } 
     catch (System.Data.OleDb.OleDbException exc) 
     { 
      return "ERROR: " + exc.ToString(); 
     } 
     finally 
     { 
      con.Close(); 
     } 

답변

0

AD의 관리자 속성이 설정되어 있는지 확인하십시오. 관리자의 고유 이름을 반환해야합니다. 그런 다음 문자열을 구문 분석하여 관리자의 samAccountName을 파악할 수 있습니다. 그런 다음 관리자의 고유 이름을 사용하여 검색을 반복하십시오. 이제 관리자 속성이 설정되어 있지 않은 경우

....

아마 부서 코드로 검색 한 다음 부서에있는 모든 사람의 제목을 확인?

Directory Services 클래스를 살펴볼 수 있습니다.

link 당신에게 AD

+0

내가 이런 식으로 뭔가 내 코드 샘플에서 사용 가능한 광고에서 데이터를 가져 오는 방법입니다 조회하는 방법에 대한 기본적인 튜토리얼을 제공? 나는 거기에 더 좋은 수있는 광고에 연결하는. NET에서 다른 방법이라고 생각 ??? – kacalapy

+0

예, OldDb 방식으로 작동 할 것입니다. 아마 ....에서 선택 관리자를 할 필요가 있습니다 (그리고 나서 재귀 적으로 체인을 통과하게됩니다). 직류 =의 amrs, DC = 승리, 직류 = ml의를 // : 난 내가 OPENQUERY (ADSI로부터 상위 50 \t 관리자 을 선택 실행할 때 LDAP ''FROM SELECT 관리자 '를, 디렉토리 서비스 – Lareau

+0

에 대한 몇 가지 정보를 추가 할 내 대답 업데이트 , dc = COM '' 여기에서 objectClass = '사용자'및 objectClass <> ''컴퓨터 '' ') AS tblADSI 여기서 관리자가 null이 아닙니다. "CN = Parlapiano \, Jim, OU = Users, OU = 기술, OU = IDS, DC = amrs, DC = win, DC = ml, DC = com "관리자 사용자 이름뿐 아니라. 그게 뭐야? – kacalapy

관련 문제