COMMENT FAIRE : Ajouter un utilisateur au système local à l'aide des services d'annuaire Directory Services et de Visual C# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 306273 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F306273
Agrandir tout | Réduire tout

Sommaire

Résumé

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

Conditions requises

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

Création de l'exemple

  1. Démarrez Microsoft Visual Studio .NET, puis créez un projet d'application de 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 celui-ci :
    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("Création du compte réussie");
    	 Console.ReadLine();
    	}
        catch (Exception ex)
    	{
    	 Console.WriteLine(ex.Message);
    	 Console.ReadLine();
    
    	}
        }
    }
  5. Compilez le projet et exécutez-le.
  6. Dans Windows 2000, suivez la procédure ci-dessous pour vérifier que le compte a été créé et ajouté au groupe Guest (Invité) :

    1. Dans le menu Démarrer, pointez sur Programmes, puis sur Outils d'administration. Cliquez ensuite sur Gestion de l'ordinateur.
    2. Cliquez sur le n?ud Utilisateurs et groupes locaux pour le développer. Le nouveau compte devrait apparaître sous le n?ud Utilisateurs, ainsi que sous le n?ud du groupe Guest.
    Dans Windows XP, suivez la procédure ci-dessous pour vérifier que le compte a été créé et ajouté au groupe Guest :
    1. Dans le menu Démarrer, cliquez sur Panneau de configuration.
    2. Double-cliquez sur Comptes d'utilisateurs. Le nouveau compte d'utilisateur devrait figurer dans la boîte de dialogue Comptes d'utilisateurs.
  7. Une fois les tests terminés, n'oubliez pas de supprimer le compte d'utilisateur récemment créé.

Explication du code

Création d'une nouvelle entrée d'annuaire

Cet exemple suppose que vous créez l'entrée d'annuaire sur un poste Microsoft Windows NT, Windows 2000 ou Windows XP. Notez que la chaîne passée au constructeur DirectoryEntry commence par "WinNT://". Vous pouvez également exécuter les services d'annuaire sur des systèmes d'exploitation tiers.
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Ajout de l'entrée d'annuaire à l'arborescence d'annuaire

Le code suivant ajoute un objet DirectoryEntry de type user de valeur TestUser1 à l'arborescence Active Directory.
DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

Définition du mot de passe et de la description pour le nouveau compte d'utilisateur

Le code suivant appelle la méthode Invoke pour invoquer les méthodes SetPassword et Put de l'objet DirectoryEntry. Cette opération permet de définir le mot de passe et d'attribuer une description au compte d'utilisateur. Ce code permet également d'appeler la méthode CommitChanges pour enregistrer les modifications.
NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

Ajout du compte à un groupe

Pour ajouter le compte à un groupe, vous devez définir une variable du type DirectoryEntry. Il vous faut ensuite appeler la méthode Find du membre Children de la classe ActiveDirectory pour remplir la variable. Dans ce cas, la recherche porte sur le groupe Guest. Ce code permet de tester la valeur renvoyée par la méthode Find pour déterminer si le groupe a été trouvé. Si c'est le cas, le nouveau compte d'utilisateur s'ajoute au groupe.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Dépannage

Le code présenté dans cet article ne fonctionne pas si vous tentez de l'exécuter sans posséder les autorisations nécessaires pour créer un compte d'utilisateur. Pour que son exécution se termine correctement, l'utilisateur actuellement connecté doit appartenir au groupe des administrateurs ou posséder les permissions l'autorisant à créer des comptes d'utilisateurs.

Propriétés

Numéro d'article: 306273 - Dernière mise à jour: lundi 13 octobre 2003 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbhowto kbhowtomaster KB306273
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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