2012-07-11 25 views
4

我正在嘗試加載用戶組的列表,並希望顯示他們是否有權編輯組成員資格。使用System.DirectoryServices.xxx可以確定用戶可以管理哪些AD組?

什麼在Active Directory中表示用戶可以編輯組的成員,我怎麼可以使用以下獲得團體爲用戶

看這件事用的System.DirectoryServices在3.5+

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain); 
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName); 
if (user != null) 
{ 
    PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups(); 
    foreach(Principal p in groups) 
    { 
     if (p is GroupPrincipal) 
      ... 
    } 
} 

任何幫助表示讚賞

回答

3

這是非常耗費時間,由於該權限的對象進行管理的方式。類似的問題可能是,「我如何列出帳戶可以寫入數據的域上的每個文件夾」。這很耗時的原因是因爲每個對象都擁有自己的訪問控制列表(ACL)。

我相當確定找出每個組可以管理的唯一方法是檢查每個組,並查看該組的權限,然後將組成員身份與組的權限進行比較。

In Active Directory, how do I determine type of ActiveDirectoryAccessRule?有一些代碼可能證明有用,如果這是你最終要走的路線。

更好的方法可能是使用「委託」字段向某些組委派權限,可以使用LDAP輕鬆查詢該字段,或讓用戶選擇任何組,然後在選擇組後檢查該組的權限。

+0

乾杯彼得,這有很大的幫助。一般只有10到15個組,所以我會嘗試AccessRule的方法,看看它帶我:) – Mark 2012-07-11 23:00:36

相關問題