아래 코드를 사용하여 주어진 사용자가 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
가 널값을 갖는 때문에 널 포인터 예외를 참조.
이와 관련하여 도움이 필요하십니까? 그룹 도메인에 존재하지 않기 때문에
groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
는 널 포인터를 반환
코드는 내 시스템에서 작동합니다. 도메인 \\ groupname이 사용중인 컨텍스트의 유효한 그룹입니까? 'ctx.ConnectedServer'를 검사하여 연결하려는 도메인에 연결되어 있는지 확인하는 것이 좋습니다. 다른 그룹 이름을 사용하여 코드가 실패했는지 확인해 볼 수도 있습니다. 'userPrincipal.GetGroups()'함수는 사용할 수있는 이름 목록을 제공합니다. –
나는 또한 귀하의 코드를 시도하고 그것은 나를 위해 잘 작동합니다. 사용자 이름과 그룹 이름에서 \\ 부분을 생략했습니다. –
또한 사용자가 그룹과 동일한 도메인에 있지 않을 가능성이 있습니까? 이 경우 귀하의 방법은 작동하지 않습니다. 불행히도이 문제에 대한 해결책이 없습니다. 나는 비슷한 문제를 겪었고 충분한 답을 찾지 못했습니다. 실제로 사용자 이름과 그룹 이름이 동일한 도메인에있는 경우 – RLH