現在の Windows ユーザーを取得して、そのユーザーが Active Directory の特定のグループに属しているかどうかを確認しようとしています。ユーザー名情報は「Harper\TSmith」を見つけますが、問題ないように見えますが、
UserPrincipal uPrincipal = Psearch.FindOne() as UserPrincipal
行 UPrincipal が null です。理由がわかりません。私はまた、それらがその特定のグループの一部であるかどうかを確認するためのboolメソッドとして、バリデータークラスを一番下に持っています。
PrincipalContext principalCtx = new PrincipalContext(ContextType.Domain);
UserPrincipal findUser = new UserPrincipal(principalCtx);
//findUser.Name = Environment.UserName;
findUser.Name = WindowsIdentity.GetCurrent().Name;
PrincipalSearcher pSearch = new PrincipalSearcher();
pSearch.QueryFilter = findUser;
UserPrincipal uPrincipal = pSearch.FindOne() as UserPrincipal;
Validator validate = new Validator();
//validate.IsUserInGroup("VisualOne", uPrincipal);
if (validate.IsUserInGroup("MyGroup", uPrincipal))
{
var MemberShipForm = new Membership();
MemberShipForm.Show();
}
public bool IsUserInGroup(string groupName, UserPrincipal user)
{
PrincipalContext context = new PrincipalContext(ContextType.Domain, "Harper");
GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "MyGroup");
if (user.IsMemberOf(group))
{
return true;
}
return false;
}