Ajouter un utilisateur au système local à l’aide des services d’annuaire et de Visual C sharp

Cet article explique comment utiliser l’espace DirectoryServices de noms pour ajouter un utilisateur au système local et à un groupe dans Visual C#.

Version d’origine du produit : Visual C#
Numéro de la base de connaissances d’origine : 306273

Résumé

Cet article pas à pas explique comment utiliser l’espace DirectoryServices de noms pour ajouter un utilisateur au système local et à un groupe.

Créer l’exemple

  1. Démarrez Visual Studio .NET 2003, Visual Studio 2005 ou Visual Studio 2008, puis créez un projet Application console Visual C#.

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence.

  3. Ajoutez une référence à l’assembly System.DirectoryServices.dll .

  4. Remplacez le code dans le fichier Class1.cs par le code suivant.

    Remarque

    Dans Visual C# 2005 ou Visual C# 2008, le fichier Class1.cs est remplacé par le fichier 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. Compilez, puis exécutez le projet.

  6. Suivez ces étapes sur un ordinateur Windows 2000 pour vérifier que le compte a été créé et ajouté au groupe Invité :

    1. Dans le menu Démarrer , pointez sur Programmes, sur Outils d’administration, puis cliquez sur Gestion de l’ordinateur.
    2. Cliquez pour développer le nœud Utilisateurs et groupes locaux . Le nouveau compte doit apparaître sous le nœud Utilisateurs, ainsi que sous le nœud du groupe Invité.

    Suivez ces étapes sur un ordinateur Windows XP pour vérifier que le compte a été créé et ajouté au groupe Invité :

    1. Dans le menu Démarrer, cliquez sur Panneau de configuration.
    2. Double-cliquez sur Comptes d’utilisateur. Le nouveau compte d’utilisateur doit apparaître dans la boîte de dialogue Comptes d’utilisateur .

    Importante

    Supprimez le compte d’utilisateur nouvellement créé du système une fois le test terminé.

Créer une entrée de répertoire

Lorsque vous créez l’entrée de répertoire dans cet exemple, il est supposé que le système exécute Windows NT, Windows 2000 ou Windows XP.

Remarque

La chaîne passée au DirectoryEntry constructeur commence par "WinNT://". Vous pouvez également exécuter des services d’annuaire sur d’autres systèmes d’exploitation tiers.

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

Ajouter l’entrée de répertoire à l’arborescence de répertoires

Le code suivant ajoute un DirectoryEntry utilisateur de type avec la valeur de TestUser1 à l’arborescence Active Directory.

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

Définir le mot de passe et la description du nouveau compte d’utilisateur

Le code suivant appelle la méthode Invoke pour appeler les SetPassword méthodes et Put de l’objet DirectoryEntry . Cela définit le mot de passe et attribue une description au compte d’utilisateur. Ce code appelle également la CommitChanges méthode pour enregistrer les modifications.

NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

Ajouter le compte à un groupe

Pour ajouter le compte à un groupe, procédez comme suit :

  1. Définissez une variable de type DirectoryEntry.
  2. Appelez la Find méthode du Children membre de la ActiveDirectory classe pour remplir la variable. Dans ce cas, le groupe Invité est la cible de la recherche. Ce code teste la valeur retournée par la Find méthode pour déterminer si le groupe a été trouvé. Si le groupe est trouvé, le nouveau compte d’utilisateur est ajouté au groupe.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Résolution des problèmes

Le code de cet article échoue si vous essayez d’exécuter le code sans les privilèges suffisants pour créer un compte d’utilisateur. Pour que le code se termine correctement, l’utilisateur actuellement connecté doit être membre du groupe Administrateurs ou disposer d’autorisations spécifiques qui permettent à l’utilisateur de créer des comptes d’utilisateur.