1

我有这个;

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, httpContext.User.Identity.Name);
PrincipalSearchResult<Principal> authgroups = user.GetAuthorizationGroups();
PrincipalSearchResult<Principal> userGroups = user.GetGroups();

它在一定程度上起作用。然而,我回来的团体看起来并不像我所期待的那样。

在命令提示符下使用gpresult /V会给我一个看起来像的列表;

    BUILTIN\Administrators
    Everyone
    SQLServerMSSQLServerADHelperUser$ITVN1259
    BUILTIN\Users

但是使用代码给了我;

Name ( "zz.Enterprise Vault Users Group 3" )
Name ( "CM-InternetAccessUsers(C)-SZ" )

如何获得与 gpresult 相同的列表?

4

1 回答 1

2

我使用这样的东西 - 我认为你只是错过了SamAccountName一部分:

    public string[] Groups
    {
        get { return UserPrincipal.Current.GetAuthorizationGroups()
                                          .Select(e => e.SamAccountName)
                                          .ToArray(); }
    }

编辑:使用GetAuthorizationGroups()而不是GetGroups()递归搜索(只返回安全组,不返回通讯组)。

于 2013-05-21T01:14:54.283 回答