Cómo agregar un usuario al sistema local mediante servicios de directorio y Visual C#

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte 306271 .


Este artículo hace referencia al siguiente espacio de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.DirectoryServices

EN ESTA TAREA

Resumen

En este artículo paso a paso se muestra cómo utilizar 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#

Crear el ejemplo

  1. Inicie Microsoft Visual Studio .NET 2003, Microsoft Visual Studio 2005 o Microsoft Visual Studio 2008 y, a continuación, cree un nuevo proyecto de aplicación de consola de Visual C#.
  2. En el Explorador de soluciones, haga clic derecho en Referencias y, a continuación, haga clic en Agregar referencia.
  3. Agregue una referencia al ensamblado System.DirectoryServices.dll .
  4. Reemplace el código en el archivo Class1.cs con el código siguiente.

    Nota: En Microsoft Visual C# 2005 o Microsoft Visual C# 2008, el archivo Class1.cs se reemplaza por el archivo Program.cs.
    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("Account Created Successfully");
    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. Desde el menú Inicio , seleccione programas, seleccione Herramientas administrativasy, a continuación, haga clic en Administración de equipos.
    2. Haga clic para expandir el nodo usuarios locales y grupos . 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 .
    Nota importante: eliminar del sistema la cuenta de usuario recién creada cuando finalice la comprobación.

Explicación de código

Crear una nueva entrada de directorio

Cuando se crea la entrada de directorio en este ejemplo, se supone que el sistema está ejecutando Microsoft Windows NT, Windows 2000 o Windows XP. Tenga en cuenta que la cadena que se pasa al constructor DirectoryEntry comienza con "WinNT: / /". También puede ejecutar servicios de directorio en otros sistemas operativos de otros fabricantes.

DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Agregar la entrada de directorio en el árbol de directorios

El código siguiente agrega un DirectoryEntry del tipo de usuario con el valor de TestUser1 al árbol de Active Directory .

DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

Establecer la contraseña y una descripción para 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 establece la contraseña y asigna una descripción a la cuenta de usuario. Este código también 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

Para agregar la cuenta a un grupo, siga estos pasos:
  1. Definir una variable de tipo DirectoryEntry.
  2. Llamar al método Find del miembro Children de la clase ActiveDirectory para llenar la variable. En este caso, el grupo invitado es el destino 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 se encuentra el grupo, 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()});}

Solución de 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 el código se ejecute correctamente, el usuario ha iniciado sesión debe ser miembro del grupo Administradores o tener permisos específicos que permitan al usuario crear cuentas de usuario.

Propiedades

Id. de artículo: 306273 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios