Active directory GetGroups不包括主组
如何从memberof参数获取所有组?方法GetGroups返回memberof+主组Active directory GetGroups不包括主组,active-directory,ldap,principalcontext,Active Directory,Ldap,Principalcontext,如何从memberof参数获取所有组?方法GetGroups返回memberof+主组 public static ArrayList GetUserGroups(string sUserName) { ArrayList myItems = new ArrayList(); UserPrincipal oUserPrincipal = GetUser(sUserName); PrincipalSearchResult<Principal> oPrincip
public static ArrayList GetUserGroups(string sUserName)
{
ArrayList myItems = new ArrayList();
UserPrincipal oUserPrincipal = GetUser(sUserName);
PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetGroups();
foreach (Principal oResult in oPrincipalSearchResult)
{
if(NOT_PRIMARY) // <-- check by primary group ID?
// How get group GUID/ CID by ID ?
myItems.Add(oResult.Name);
}
return myItems;
}
publicstaticarraylistgetusergroups(字符串sUserName)
{
ArrayList myItems=新建ArrayList();
UserPrincipal=GetUser(sUserName);
PrincipalSearchResult-oPrincipalSearchResult=USERPrincipal.GetGroups();
foreach(负责人或运营结果)
{
如果(非主要)/存在解决方案:
public static ArrayList GetUserGroupsExcludingPrimaryGroup(string sUserName)
{
ArrayList myItems = new ArrayList();
UserPrincipalEx oUserPrincipal = GetUser(sUserName);
var objectSid = oUserPrincipal.ObjectSid.ToString();
objectSid = objectSid.Substring(0, objectSid.LastIndexOf("-")) + "-" + oUserPrincipal.PrimaryGroupID;
PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetGroups();
foreach (Principal oResult in oPrincipalSearchResult)
{
if (objectSid != oResult.Sid.ToString())
myItems.Add(oResult.Name);
}
return myItems;
}
namespace System.DirectoryServices.AccountManagement
{
[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("User")]
public class UserPrincipalEx : UserPrincipal
{
public UserPrincipalEx(PrincipalContext context) : base(context) { }
public UserPrincipalEx(PrincipalContext context, string samAccountName, string password, bool enabled) : base(context, samAccountName, password, enabled) { }
...
[DirectoryProperty("primaryGroupID")]
public Int32 PrimaryGroupID
{
get { return (Int32)ExtensionGet("primaryGroupID")[0]; }
set { ExtensionSet("primaryGroupID", value); }
}
[DirectoryProperty("objectSid")]
public SecurityIdentifier ObjectSid
{
get { return new SecurityIdentifier((byte[])ExtensionGet("objectSid")[0], 0); }
set { ExtensionSet("objectSid", value); }
}
}
}