2009年3月1日 星期日

ADSI技術文章-使用WinNT Provider取得Group的Users

問題說明:
如果我們想使用WinNT Provider,透過群組名稱取得所有的成員,應該如何做呢?
下面範例會傳回一組帳號和FullName的Dictionary資料:

public Dictionary GetWinNtGroupUsers(string groupName, string uName, string pwd)
{
Dictionary rv = new Dictionary();
string adsPath = string.Format("WinNT://{0}/{1},group", Environment.MachineName, groupName);
if (DirectoryEntry.Exists(adsPath) == true)
{
DirectoryEntry group = new DirectoryEntry(adsPath, uName, pwd);
IADsUser iu;
//叫用 Group 的 Members
object members = group.Invoke("Members", null);
DirectoryEntry mEntry;
foreach (object mb in (IEnumerable)members)
{
mEntry = new DirectoryEntry(mb);
if (mEntry.SchemaClassName.ToLower() == "user")
{
iu = (IADsUser)mEntry.NativeObject;
rv.Add(iu.Name, iu.FullName);
}
}
}
return rv;
}
*使用IADsUser的COM介面,可以輕鬆取得User的屬性。
*使用IADsUser的COM介面須加入ActiveDs.dll參考項。

沒有留言: