Adicionar um usuário ao sistema local usando serviços de diretório e Visual C sharp

Este artigo descreve como usar o DirectoryServices namespace para adicionar um usuário ao sistema local e a um grupo no Visual C#.

Versão original do produto: Visual C#
Número de KB original: 306273

Resumo

Este artigo passo a passo mostra como usar o DirectoryServices namespace para adicionar um usuário ao sistema local e a um grupo.

Criar o Exemplo

  1. Inicie o Visual Studio .NET 2003, Visual Studio 2005 ou Visual Studio 2008 e crie um novo projeto de Aplicativo de Console do Visual C#.

  2. Em Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência.

  3. Adicione uma referência ao System.DirectoryServices.dll assembly.

  4. Substitua o código no arquivo Class1.cs pelo código a seguir.

    Observação

    No Visual C# 2005 ou Visual C# 2008, o arquivo Class1.cs é substituído pelo arquivo 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 e execute o projeto.

  6. Siga estas etapas em um computador baseado no Windows 2000 para verificar se a conta foi criada e adicionada ao grupo convidado:

    1. No menu Iniciar, aponte para Programas, aponte para Ferramentas Administrativas e clique em Gerenciamento de Computadores.
    2. Clique para expandir o nó Usuários Locais e Grupos . A nova conta deve aparecer no nó Usuários, bem como no nó do grupo Convidado.

    Siga estas etapas em um computador baseado em Windows XP para verificar se a conta foi criada e adicionada ao grupo convidado:

    1. No menu Iniciar, clique em Painel de Controle.
    2. Clique duas vezes em Contas de Usuário. A nova conta de usuário deve aparecer na caixa de diálogo Contas de Usuário .

    Importante

    Remova a conta de usuário recém-criada do sistema após concluir o teste.

Criar uma entrada de novo diretório

Ao criar a entrada do diretório neste exemplo, presume-se que o sistema esteja executando Windows NT, Windows 2000 ou Windows XP.

Observação

A cadeia de caracteres que é passada para o DirectoryEntry construtor começa com "WinNT://". Você também pode executar os Serviços de Diretório em outros sistemas operacionais de terceiros.

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

Adicionar a Entrada do Diretório à Árvore de Diretório

O código a seguir adiciona um DirectoryEntry usuário de tipo com o valor da árvore do TestUser1 Active Directory.

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

Defina a senha e a descrição da nova conta de usuário

O código a seguir chama o método Invoke para invocar os SetPassword métodos e Put do DirectoryEntry objeto. Isso define a senha e atribui uma descrição à conta de usuário. Esse código também chama o CommitChanges método para salvar as alterações.

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

Adicionar a conta a um grupo

Para adicionar a conta a um grupo, siga estas etapas:

  1. Definir uma variável do tipo DirectoryEntry.
  2. Chame o Find método do Children membro da ActiveDirectory classe para preencher a variável. Nesse caso, o grupo Convidado é o destino da pesquisa. Esse código testa o valor que o Find método retorna para determinar se o grupo foi encontrado. Se o grupo for encontrado, a nova conta de usuário será adicionada ao grupo.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Solução de problemas

O código neste artigo falhará se você tentar executar o código sem os privilégios suficientes para criar uma conta de usuário. Para que o código seja concluído com êxito, o usuário conectado atualmente deve ser um membro do grupo Administradores ou ter permissões específicas que permitem que o usuário crie contas de usuário.