2009-12-29 136 views
5

如何從AD獲取用戶的組成員身份,最好使用與我用來獲取用戶的Department屬性相同的模式,如下所示?我已經找到了幾個例子,但是所有實例技術的交集是相當小的,並且缺乏這處查詢的氣密性和簡單性:從Active Directory獲取用戶的組成員身份

 var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost"; 
     var remoteRoot = new DirectoryEntry(GetRootPath(adServer)); 
     var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName)); 

     searcher.PropertiesToLoad.Add("Department"); 
     SearchResult result = null; 
     result = searcher.FindOne(); 

回答

6

你在.NET 3.5?如果是的話,它很容易:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

string userName = "yourUser"; 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups(); 

找到你的用戶,然後調用.GetAuthorizationGroups()您的用戶主體 - 返回用戶所屬的,包括他的主要組的所有組和所有嵌套組成員。

查看此MSDN article在.NET 3.5中涉及到處理AD時的更多新功能。

在.NET 2.0中,事情變得更加複雜......

+0

謝謝。這是一半的工作,但當我調用GetAuthorizationGroups() – ProfK 2009-12-30 07:30:30

+0

時,您是否在構建主體上下文時指定了NetBIOS域名?出現「無法訪問域信息」(類似這樣的錯誤)?例如。 「YOURDOMAIN」,而不是「yourcompany.com」? – 2009-12-30 07:57:26

+0

適合我。爲我節省了很多工作!謝謝 – paul 2010-01-29 10:56:55

相關問題