我使用下面的代碼段,以檢查給定用戶的是否處於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
是具有空值。
在這方面的任何幫助嗎?
你的代碼工作我的系統上。您確定domain \\ groupname是您使用的上下文中的有效組嗎?可能值得檢查'ctx.ConnectedServer'以確保您連接到您希望連接的域。你也可以嘗試使用不同的組名來檢查你的代碼是否失敗。 'userPrincipal.GetGroups()'函數會給你一個你可以使用的名字列表。 –
我也試過你的代碼,它也適用於我。我從用戶名和組名中省略了domain \\部分。 –
另外,您的用戶是否有可能與查詢的組不在同一個域中?如果是這種情況,你的方法將不起作用。不幸的是,我沒有解決這個問題的辦法。我遇到過類似的問題,從來沒有找到足夠的答案。 – RLH