private const string ACCOUNT_NAME = "(sAMAccountName={0})";
private const string MEMBER = "memberOf"; public static string[] GetGroups(string argUserName,string argDomain)
{
ArrayList list = new ArrayList();
DirectorySearcher searcher = new DirectorySearcher();
searcher.SearchRoot = new DirectoryEntry("LDAP://" + "DC=domain,DC=cn"
,"user"
,"pass");
searcher.Filter = string.Format(ACCOUNT_NAME,argUserName); SearchResult result = searcher.FindOne();
if(result != null)
{
DirectoryEntry userEntry = new DirectoryEntry(result.Path
,"user"
,"pass"); foreach(string path in userEntry.Properties[MEMBER])
{
DirectoryEntry groupEntry = new DirectoryEntry("LDAP://" + path
,"user"
,"pass");
list.Add(argDomain + "\\" + groupEntry.Properties["name"][0]);
}
}
return (string[])list.ToArray(typeof(string));
}
上述C#代码在域服务器是win2003是一切正常,可以找到argUserName,也可以拿到所属的Group
而当域服务器是win2000Server时,只可以找到该argUserName,但是无法拿到所属的Group,
好像是没有这个“memberof”的属性。
难道是win2003的新属性?还是win2000Server设置的问题?或是其他的问题?
注意:"user","pass"有足够的权限,是Power User。
有没有高人可以指点一下,先谢了!