次のコードを使用して、ActiveDirectory のグループを取得します。
public static Task<List<String>> GetGroups(String domain = "")
{
return (Task.Factory.StartNew<List<String>>(() =>
{
List<String> list = new List<String>();
try
{
if (String.IsNullOrWhiteSpace(domain))
{
SelectQuery sQuery = new SelectQuery("Win32_Group", "LocalAccount=\"true\"");
ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
list.AddRange(mSearcher.Get().Cast<ManagementObject>().Select(x => x["Name"].ToString()));
}
else
{
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + domain);
DirectorySearcher searcher = new DirectorySearcher(directoryEntry, "(&(objectClass=group))");
searcher.SearchScope = SearchScope.Subtree;
list.AddRange(searcher.FindAll().Cast<SearchResult>().Select(x => x.GetDirectoryEntry().Name.Replace("CN=", String.Empty)));
}
}
catch (COMException e)
{
Logger.WriteException(e);
}
return (list.OrderBy(x => x).ToList());
}));
}
コードはうまく機能しますが、組織単位で宣言されているグループを返しません... OU にあるものを含むすべてのグループを取得するにはどうすればよいですか?
前もって感謝します