2010-10-25 45 views
1

我寫這讓特定用戶所屬的組:如何獲取所有窗口組?

DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); 
DirectoryEntry user = AD.Children.Find(completeUserName, "user"); 
object obGroups = AD.Invoke("Groups"); 
foreach (object ob in (IEnumerable)obGroups) 
{ 
    // Create object for each group. 
    DirectoryEntry obGpEntry = new DirectoryEntry(ob); 
    listOfMyWindowsGroups.Add(obGpEntry.Name); 
} 
for (int j = 0; j < listOfMyWindowsGroups.Count; j++) 
{ 
    //ex 
} 

怎麼可能來檢索窗口所有的組,而不是隻爲特定的用戶?

回答

1

如何爲組設置過濾器並枚舉結果。

試試這個過濾器:

AD.Children.SchemaFilter.Add("group"); 
+0

後: AD.Children.Cast <的DirectoryEntry >()。選擇(de => de.Name).ToArray() – Spartaco 2013-04-17 13:57:18

1

試試這個,它會給你一個specicied OU所有組。

public ArrayList GetGroups() 
{ 
    ArrayList myItems = new ArrayList(); 

    // Create the principal context for the group object. 
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ContextOptions.SimpleBind, sServiceUser, sServicePassword); 

    // Create the GroupPrincipal object and set the diplay name property. 
    GroupPrincipal oGroupPrincipal = new GroupPrincipal(oPrincipalContext); 

    // Create a PrincipalSearcher object.  
    PrincipalSearcher oPrincipalSearcher = new PrincipalSearcher(oGroupPrincipal); 

    // Searches for all groups named "Administrators". 
    PrincipalSearchResult<Principal> oPrincipalSearchResult = oPrincipalSearcher.FindAll(); 

    foreach (Principal oResult in oPrincipalSearchResult) 
    { 
     myItems.Add(oResult.Name); 
    } 
    return myItems; 
} 

對於一個完整的參考,你可以檢查這一個

的.Net 3.5版本 - >http://anyrest.wordpress.com/2010/06/28/active-directory-c/

舊版本 - >http://anyrest.wordpress.com/2010/02/01/active-directory-objects-and-c/

相關問題