Pues vereis, me han pedido que haga un programa que se conecte con un directorio activo y saque de todas las cuentas de usuario que haya un dato. Yo de LDAP no tengo ni puta idea pero gracias a google he sacado lo siguiente:
namespace ConnectLDAP
{
[DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
public class LDAPConnect
{
static LdapConnection ldapConnection;
static string ldapServer;
static NetworkCredential credential;
static string targetOU;
public static void Main(string[] args)
{
try
{
string[] variables = {"Win2k3R2EE.wiki.yo.es","Administrator","Evaluation1","wiki.yo.es","OU=Users,DC=wiki,DC=yo,DC=es" };
GetParameters(variables);
ldapConnection = new LdapConnection(ldapServer);
ldapConnection.Credential = credential;
Console.WriteLine("LdapConnection is created successfully.");
DirectoryEntry deOU = new DirectoryEntry("LDAP://ou=Users,dc=wiki,dc=yo,dc=es");
DirectorySearcher dsUsers = new DirectorySearcher(deOU);
dsUsers.Filter = "(&(objectClass=user)(objectCategory=Person))";
dsUsers.PropertiesToLoad.Add("First Name");
foreach (SearchResult oResult in dsUsers.FindAll())
{
Console.WriteLine(oResult.ToString());
}
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("\r\nUnexpected exception occured:\r\n\t" + e.GetType() + ":" + e.Message);
Console.ReadLine();
}
}
static void GetParameters(string[] datos)
{
ldapServer = datos[0];
credential = new NetworkCredential(datos[1], datos[2], datos[3]);
targetOU = datos[4];
}
}
}
Del codigo que he puesto me funciona todo menos el foreach, cuando llega ahi me salta el catch y no tengo ni idea de a que es debido, a ver si podeis echarme un cable.
Gracias.