2014-04-21 5 views
1

에 고유 이름을 변환 System.DirectoryServices (즉 DirectoryEntry 클래스) 일반적으로 Active Directory 사용자 & 컴퓨터 스냅인에 나타나는 정식 이름에 DistinguishedName 속성을 변환하거나 얻을 수있는 방법이 있나요? 정규 표현식을 사용하여이 작업을 수행 할 수 있다는 것을 알고 있지만 더 안정적인 접근 방식을 선호합니다.사용하여 정식 이름

예를 들어,이

CN = 머독 \, 제임스, OU = 사용 안 함 사용자, OU = GOG, DC = CONTOSO, DC = 지역

을 변환 할

contoso.local/GOG/장애인 사용자/머독, 제임스

답변

5

이것은 구성된 속성입니다. DirectoryEntry에서 RefreshCache를 사용해야합니다.

var de = new DirectoryEntry("CN=Murdock\, James,OU=Disabled Users,OU=GOG,DC=contoso,DC=local"); 
de.RefreshCache(new string[] {"canonicalName"}); 
+0

** + 1 **이 방법이 효과적이었습니다! 감사! –

0

당신 canonicalName 속성이 필요합니다. 이미 DirectoryEntry로 사용자를 가져 오는 코드가 있다고 가정합니다.

userDe.Properties["canonicalName"][0].ToString() 
+0

해당 속성이 없습니다. 적어도 제 환경에는 없습니다. –

+1

죄송합니다. 더 철저히 조사 했어야합니다. "canonicalName"은 지정해야하는 속성입니다. 이것은 생성 된 속성이며 표준 DE 객체로 반환되지 않습니다 (미안, 먼저 확인 했어야 함). SDS를 사용하는 경우 DirectorySearcher 및 PropertiesToLoad.Add ("canonicalName")를 사용하여 값을 가져올 수 있습니다. – codingChris