CÓMO: Agregar un usuario al sistema local mediante Servicios de directorio y Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 306273 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E306273
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo describe cómo usar el espacio de nombres DirectoryServices para agregar un usuario al sistema local y a un grupo.

Requisitos

  • Microsoft Windows XP, Windows 2000 o Windows NT 4.0
  • Visual C# .NET

Crear el ejemplo

  1. Abra Microsoft Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de Visual C#.
  2. En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Referencias y, después, haga clic en Agregar referencia.
  3. Agregue una referencia al ensamblado System.DirectoryServices.dll.
  4. Reemplace el código de Class1.cs por el código siguiente:
    using System;
    using System.DirectoryServices;
    
    class Class1
    {
        static void Main(string[] args)
        {
        try
            {
    	 DirectoryEntry AD = new DirectoryEntry("WinNT://" +
    	                     Environment.MachineName + ",computer");
    	 DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
    	 NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
    	 NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
    	 NewUser.CommitChanges();
    	 DirectoryEntry grp;
    
    	 grp = AD.Children.Find("Guests", "group");
    	 if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
    	 Console.WriteLine("Cuenta creada correctamente");
    	 Console.ReadLine();
    	}
        catch (Exception ex)
    	{
    	 Console.WriteLine(ex.Message);
    	 Console.ReadLine();
    
    	}
        }
    }
  5. Compile y ejecute el proyecto.
  6. Siga estos pasos en un equipo basado en Windows 2000 para comprobar que la cuenta se creó y agregó al grupo Invitados:

    1. En el menú Inicio, seleccione Programas, Herramientas administrativas y, a continuación, haga clic en Administración de equipos.
    2. Haga clic en el nodo Usuarios locales y grupos para expandirlo. La nueva cuenta debe aparecer bajo el nodo Usuarios, así como bajo el nodo del grupo Invitados.
    Siga estos pasos en un equipo basado en Windows XP para comprobar que la cuenta se creó y agregó al grupo Invitados:
    1. En el menú Inicio, haga clic en Panel de control.
    2. Haga doble clic en Cuentas de usuario. La nueva cuenta de usuario debe aparecer en el cuadro de diálogo Cuentas de usuario.
  7. Es importante que quite del sistema la cuenta de usuario recién creada cuando finalice la comprobación.

Explicación del código

Crear una nueva entrada de directorio

Al crear la entrada de directorio de este ejemplo se supone que está ejecutando Microsoft Windows NT, Windows 2000 o Windows XP. Tenga en cuenta que la cadena que se pasa al constructor DirectoryEntry empieza con "WinNT://". También puede ejecutar Servicios directorio en los sistemas operativos de otros proveedores.
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Agregar la entrada de directorio al árbol de directorio

El código siguiente agrega un DirectoryEntry del tipo user con el valor de TestUser1 al árbol de Active Directory.
DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

Asignar la contraseña y la descripción a la nueva cuenta de usuario

El código siguiente llama al método Invoke para invocar los métodos SetPassword y Put del objeto DirectoryEntry. Esto asigna la contraseña y una descripción a la cuenta de usuario. Este código llama al método CommitChanges para guardar los cambios.
NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

Agregar la cuenta a un grupo

El primer paso para agregar la cuenta a un grupo es definir una variable del tipo DirectoryEntry. Debe llamar al método Find del miembro Children de la clase ActiveDirectory para llenar la variable. En este caso, el grupo Invitados es el objetivo de la búsqueda. Este código demuestra el valor que devuelve el método Find para determinar si se ha encontrado el grupo. Si el grupo se ha encontrado, la nueva cuenta de usuario se agrega al grupo.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Solucionar problemas

El código de este artículo falla si intenta ejecutar el código sin los privilegios suficientes para crear una cuenta de usuario. Para que el código se complete con éxito, el usuario que ha iniciado sesión debe pertenecer al grupo Administradores o tener permisos específicos que permitan al usuario crear cuentas de usuario.

Propiedades

Id. de artículo: 306273 - Última revisión: jueves, 10 de abril de 2003 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbhowto kbhowtomaster KB306273

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com