Hier sind so ziemlich alle Methoden die ich jemals benutzt habe.
#region LDAP Methoden
string ExistsInLdap(string userName)
{
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = String.Format("(SAMAccountName={0})", userName);
search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("samaccountname");
search.PropertiesToLoad.Add("givenname");
search.PropertiesToLoad.Add("sn");
SearchResult result = search.FindOne();
string samaccountname = (string)result.Properties["samaccountname"][0]; //Kuerzel
string givenname = (string)result.Properties["givenname"][0]; //Vorname
string surname = (string)result.Properties["sn"][0]; //Nachname
string cn = (string)result.Properties["cn"][0]; //Vor und Nachname
if (result == null)
{
return String.Empty;
}
else
{
return samaccountname;
}
}
ArrayList GetUserGroups(string userName)
{
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = String.Format("(samaccountname={0})", userName);
search.PropertiesToLoad.Add("memberOf");
string groupsList = "";
ArrayList groupList = new ArrayList();
string strtest = "";
SearchResult result = search.FindOne();
if (result != null)
{
int groupCount = result.Properties["memberOf"].Count;
for(int counter = 0; counter < groupCount; counter++)
{
groupsList = (string)result.Properties["memberOf"][counter];
int indexChar = groupsList.IndexOf(",");
string subString = groupsList.Substring(0,indexChar);
int indexChar2 = groupsList.IndexOf("=");
groupList.Add(subString.Substring(indexChar2+1,(subString.Length)-(indexChar2+1)));
}
}
return groupList;
}
ArrayList GetAllADDomainUsers(string domain)
{
ArrayList allUsers = new ArrayList();
DirectoryEntry searchRoot = new DirectoryEntry(domain,"dein ADMINUSER","pw des ADMINUSERS");
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
search.PropertiesToLoad.Add("samaccountname");
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null)
{
for(int counter=0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("samaccountname"))
{
allUsers.Add((String)result.Properties["samaccountname"][0]);
}
}
}
return allUsers;
}
ArrayList GetAllGroups()
{
ArrayList allGroups = new ArrayList();
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=group)(objectCategory=group))";
search.PropertiesToLoad.Add("samaccountname");
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("samaccountname"))
{
allGroups.Add((String)result.Properties["samaccountname"][0]);
}
}
}
return allGroups;
}
ArrayList GetADGroupUsers(string groupName)
{
SearchResult result;
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = String.Format("(cn={0})", groupName);
search.PropertiesToLoad.Add("member");
search.PropertiesToLoad.Add("samaccountname");
result = search.FindOne();
string memberList = "";
ArrayList userNames = new ArrayList();
if (result != null)
{
for (int counter = 0; counter <
result.Properties["member"].Count; counter++)
{
memberList = (string)result.Properties["member"][counter];
int indexChar = memberList.IndexOf(",");
string subString = memberList.Substring(0, indexChar);
int indexChar2 = memberList.IndexOf("=");
userNames.Add(subString.Substring(indexChar2 + 1, (subString.Length) - (indexChar2 + 1)));
}
}
return userNames;
}
#endregion