En este grupo En todos

Foro de Active Directory



WebPart en SharePoint: insertar usuario en Active Directory

Escrito por Angierodelgo
el 26/10/2006
Hola, estoy programando una webpart que se encarga de inserta usuarios en Active Directory. Mi problema es el siguiente.
Yo en mi ordenador tengo instalado Windows Sharepoint Services y Active Directory y se me inserta correctamente el usuario(WSS y AD están instalados en la misma máquina).
Tengo que incluir esta misma webpart en un servidor donde va a funcionar (Sharepoint Portal Server) cuyo Active Directory está incluido en un servidor diferente al de Sharepoint (es decir están en diferentes equipos) y no me permite relizar las funciones de Añadir usuario (Add), Buscar (Find).
Para el siguiente código:

DirectorySearcher DSESearcher = new DirectorySearcher();
string path = DSESearcher.SearchRoot.Children. Find("ou=usuarios_grupos"). Path;

DirectoryEntry AD = new DirectoryEntry(path);
DirectoryEntry NewUser = AD.Children.Add("cn=" + usuario, "user");//Aquí da el error

NewUser. Properties["userPrincipalName"]. Value = usuario;
NewUser. Properties["name"]. Value = usuario;
NewUser. Properties["samAccountName"]. Value = usuario;
NewUser. CommitChanges();

string path2 = NewUser. Path;
DirectoryEntry usr = new DirectoryEntry(path2);
int val = (int)usr. Properties["userAccountControl"]. Value;
usr. Properties["userAccountControl"]. Value = val &
~(int)ActiveDs.ADS_USER_FLAG.ADS_UF_ACCOUNTDISABLE;
usr. Invoke("SetPassword", contrasenya);
usr. CommitChanges();

Da el siguiente error:
System.Runtime.InteropServices. COMException (0x80072020): Error de operación at System.DirectoryServices.DirectoryEntry. Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry. Bind() at System.DirectoryServices.DirectoryEntry. Get_IsContainer() at System.DirectoryServices.DirectoryEntries. CheckIsContainer() at System.DirectoryServices.DirectoryEntries. Find(String name, String schemaClassName) at System.DirectoryServices.DirectoryEntries. Find(String name) at ActiveDirectory.ToolPartActiveDirectory.insertarUsuario(String usuario, String contrasenya, String nombre)

Y si lo intento insertar en el path del Active directory y no en la Unidad organizativa, es decir con path:
string path = DSESearcher.SearchRoot.Children. Path;

El error que se me muestra es el siguiente:

System.Runtime.InteropServices. COMException (0x80072020): Error de operación at System.DirectoryServices.DirectoryEntry. Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry. Bind() at System.DirectoryServices.DirectoryEntry. Get_IsContainer() at System.DirectoryServices.DirectoryEntries. CheckIsContainer() at System.DirectoryServices.DirectoryEntries. Add(String name, String schemaClassName) at ActiveDirectory.ToolPartActiveDirectory.insertarUsuario(String usuario, String contrasenya, String nombre)

Si alguien me puede ayudar se lo agredecería.