2010-03-11 84 views
3

我想知道給定用戶是否爲組的成員。現在,我對ActiveDirecory或Exchange服務器瞭解不多,但在Outlook中,我可以看到用戶可以是「memberOf」組(我可以用DirectorySearcher.PropertiesToLoad.Add("memberof");查詢這些組),但也有其他用戶組不積極成員,但那包含用戶。如果您將郵件發送給這些組(或別名),則可以訪問其中包含的所有用戶。ActiveDirectory DirectorySearcher:檢查用戶是否爲組的成員

基本上,給出一個用戶名(如DOMAIN\JDoe),如何檢查它是否包含在C#中的組FUNNY_USERS

感謝

回答

11

使用System.DirectoryServices.AccountManagement命名空間在.Net 3.5中,如果它是可用的。以下是組檢查的示例:

using(var pc = new PrincipalContext(ContextType.Domain)) 
using(var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "DOMAIN\JDoe")) 
using(var group = GroupPrincipal.FindByIdentity(pc, "FUNNY_USERS")) 
{ 
    return user.IsMemberOf(group); 
} 
+1

您需要配置電腦,用戶和組。 – hwiechers

+0

它不顯示父母的父母(組A嵌套B組,B的用戶X成員 - userX.IsMemberOf(GroupA)= false)。有沒有什麼辦法可以讓它在沒有編碼遞歸的情況下工作? –

1

您在Outlook中看到的用戶可能是通訊組。 Active Directory中有通訊組和安全組。看起來你想要檢查任何一個/或。

見我的崗位在this similar question僅使用LDAP在C#中的示例調用

相關問題