2011-03-14 4 views
3

는 기본 그룹을 포함하여 사용자가 속한 모든 그룹을 얻으려고 노력 받기 . 다른 그룹 외에 primaryGroupID을 사용하여 기본 그룹 의 이름을으로 가져 오는 방법이 있습니까?주 그룹 ID

+1

이 정보가 도움이됩니까? http://dunnry.com/blog/2005/01/18/DeterminingYourPrimaryGroupInActiveDirectoryUsingNET.aspx – RQDQ

답변

1

당신은

string.Format("(&(objectCategory=group)(objectClass=group)(primaryGroupToken={0}))", singleRes.Properties["primaryGroupID"]); 

primaryGroupToken 그룹이 작성 될 때 자동으로 Active Directory에 의해 생성 된 계산 된 속성입니다 다음 검색 필터를 사용하여 다른 검색을 실행해야합니다. 사용자에게 할당 된 primaryGroupID은이 값을 저장합니다.

실제로 이 실제로는이고 쉬운 방법이라면 UserPrincipal.GetGroups을 사용하는 것이 좋습니다. 유일한 것은 .NET 3.5 이상에서만 찾을 수 있다는 것입니다.

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com")) 
{ 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "YourUser")) 
    { 
     foreach (Principal p in user.GetGroups()) 
     { 
      Console.WriteLine(p.Name); 
     } 
    } 
} 

GetGroups 돌아갑니다 즉시 기본 그룹을 포함하여 사용자를 포함 그룹 만. 중첩 된 그룹을 모두 가져 오려면 GetAuthorizationGroups을 사용할 수 있습니다.

+0

첫 번째 예제는 'singleRes.Properties [ "primaryGroupID"]. 값 대신 간단히 :'singleRes.Properties [ "primaryGroupID"] ' –

+0

그 이상으로 구성된 속성을 LDAP 필터로 사용할 수 없습니다. http://blogs.technet.com/b/efleis/archive/2004/11/17/258710.aspx –