Estoy escribiendo los siguientes métodos para agregar y eliminar usuarios del directorio activo en C#.Agregar y eliminar usuarios de grupos de Active Directory en .NET
void AddUserToGroup(string userId, string groupName);
void RemoveUserFromGroup(string userId, string groupName);
¿Cuál es la mejor manera de implementar estos métodos?
Aquí hay un código de CodeProject. Sin embargo, no puedo ver dónde se especifica el servidor AD en estos ejemplos. (¿Es provisto implícitamente por .NET Framework cuando se usa el protocolo LDAP?). ¿Vale la pena seguir estos ejemplos?
public void AddToGroup(string userDn, string groupDn)
{
try
{
DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn);
dirEntry.Properties["member"].Add(userDn);
dirEntry.CommitChanges();
dirEntry.Close();
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
//doSomething with E.Message.ToString();
}
}
public void RemoveUserFromGroup(string userDn, string groupDn)
{
try
{
DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn);
dirEntry.Properties["member"].Remove(userDn);
dirEntry.CommitChanges();
dirEntry.Close();
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
//doSomething with E.Message.ToString();
}
}
System.DirectorServices.AccountManagement solo está disponible en> = 3.5, en lugar de de 3.0 – regex
Debajo del código funcionó para mí *** group.Members.Remove (UserPrincipal.FindByIdentity (pc, userId)); *** en lugar de *** "group.Members.Remove (pc, IdentityType.UserPrincipalName, userId) ; "***. Nota: mi ID de usuario es solo "NOMBRE DE USUARIO" sin agregar el nombre de dominio – Rama
Sí, esa sobrecarga también funciona, es solo una llamada adicional al servicio LDAP para obtener la identidad del usuario antes de enviar la llamada eliminada. Francamente, es posible que sean equivalentes en su función, ya que la API probablemente llama al LDAP para la identidad basada en el nombre de usuario antes de eliminarlo también. –