我想查找用戶所在的組列表。我嘗試了幾種解決方案,從 http://www.codeproject.com/KB/system/everythingInAD.aspx 但沒有結果。活動目錄:獲取用戶所在的組
此代碼給我一個 「真」,是指LDAP運行:
public static bool Exists(string objectPath)
{
bool found = false;
if (DirectoryEntry.Exists("LDAP://" + objectPath))
found = true;
return found;
}
感謝,
更新1:
public ArrayList Groups(string userDn, bool recursive)
{
ArrayList groupMemberships = new ArrayList();
return AttributeValuesMultiString("memberOf", "LDAP-Server",
groupMemberships, recursive);
}
public ArrayList AttributeValuesMultiString(string attributeName,
string objectDn, ArrayList valuesCollection, bool recursive)
{
DirectoryEntry ent = new DirectoryEntry(objectDn);
PropertyValueCollection ValueCollection = ent.Properties[attributeName];
IEnumerator en = ValueCollection.GetEnumerator();
while (en.MoveNext())
{
if (en.Current != null)
{
if (!valuesCollection.Contains(en.Current.ToString()))
{
valuesCollection.Add(en.Current.ToString());
if (recursive)
{
AttributeValuesMultiString(attributeName, "LDAP://" +
en.Current.ToString(), valuesCollection, true);
}
}
}
}
ent.Close();
ent.Dispose();
return valuesCollection;
}
我有一個例外:
PropertyValueCollection ValueCollection = ent.Properties[attributeName];
「收到COMException是未處理」
在您鏈接的文章中,有一個「獲取用戶組成員」部分...你試試看嗎? –
可以嗎? st代碼不適合你嗎? – baalazamon
順便說一下,在這種情況下,true意味着該對象存在,而不是LDAP正在運行。也許你應該瞭解一些關於LDAP和Active Directory的基本知識。 –