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
Démarrez Visual Studio .NET 2003, Visual Studio 2005 ou Visual Studio 2008, puis créez un projet Application console Visual C#.
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence.
Ajoutez une référence à l’assembly
System.DirectoryServices.dll
.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(); } } }
Compilez, puis exécutez le projet.
Suivez ces étapes sur un ordinateur Windows 2000 pour vérifier que le compte a été créé et ajouté au groupe Invité :
- Dans le menu Démarrer , pointez sur Programmes, sur Outils d’administration, puis cliquez sur Gestion de l’ordinateur.
- 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é :
- Dans le menu Démarrer, cliquez sur Panneau de configuration.
- 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 :
- Définissez une variable de type
DirectoryEntry
. - Appelez la
Find
méthode duChildren
membre de laActiveDirectory
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 laFind
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour