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(); }
    }

EDIT :再帰的検索のGetAuthorizationGroups()代わりに使用します (配布グループではなく、セキュリティグループのみを返します)。GetGroups()

于 2013-05-21T01:14:54.283 に答える