以下のコードを使用して、特定のユーザーがADの配布グループの一部であるかどうかを確認しています。ユーザーがADの配布リスト/セキュリティグループのメンバであるかどうかを確認する方法C#
static bool IsUserMemberOf(string userName, string groupName)
{
using (var ctx = new PrincipalContext(ContextType.Domain))
using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
{
return userPrincipal.IsMemberOf(groupPrincipal);
}
}
私はIsUserMemberOf("domain\\username","domain\\groupname")
などの値をメソッドの上に呼び出しています。しかしgroupPrincipal
がnull値を持つているので、私は、nullポインタ例外を参照してください。
この点に関するお手伝いはありますか?
あなたのコードは私のシステム上で動作します。ドメイン\\ groupnameは使用しているコンテキスト内の有効なグループですか? 'ctx.ConnectedServer'を調べて、接続が期待されるドメインに接続していることを確認する価値があります。また、コードが失敗したかどうかを確認するためだけに、別のグループ名を使用してみることもできます。 'userPrincipal.GetGroups()'関数はあなたが使用できる名前のリストを提供します。 –
私もあなたのコードを試して、それは私のためにも動作します。ユーザー名とグループ名からドメイン\\部分を省略しました。 –
また、ユーザーがグループと同じドメインにいない可能性はありますか?その場合、あなたの方法は機能しません。残念ながら、私はこの問題に対する解決策はありません。私も同様の問題を抱えており、十分な答えを見つけることはできませんでした。実際に上記のコード – RLH