C#
- Criando uma conta do usuário local do Windows
![]() |
Neste artigo vou mostrar como criar uma conta de usuário local do Windows usando a linguagem c#. |
![]() |
A pasta Users, que está localizada no Console de Gerenciamento Microsoft (MMC) dos Usuários e Grupos Locais, exibe contas de usuário padrão, bem como as contas de usuário que você criou. Essas contas de usuário padrão são criadas automaticamente quando você instala o sistema operacional. Você tem contas de administrador e de convidados.
Podemos criar contas de usuários locais via código e é isso que vou mostrar neste artigo.
Para isso você tem que executar o Visual Studio como administrador do sistema e precisa incluir uma referência a System.DirectoryServices no projeto.
O namespace System.DirectoryServices fornece acesso aos serviços de domínio Active Directory do código gerenciado.
Ele contém duas classes de componente, DirectoryEntry e DirectorySearcher, que usam a tecnologia de Interfaces de serviços do Active Directory (ADSI). (A ADSI é o conjunto de interfaces que a Microsoft fornece para trabalhar com uma variedade de provedores de rede.)
Vamos incluir também uma referência ao namespace System.DirectoryServices.AccountManagement para poder usar a classe PrincipalContext que encapsula o servidor ou o domínio contra o qual todas as operações são executadas, o contêiner que é usado como a base dessas operações e as credenciais usadas para executar as operações.
Recursos Usados :
Criando o projeto Console
Abra o VS 2017 Community e crie um projeto do tipo Console App(.NET Framework) chamado CShp_ContaUsuarioLocal:
A seguir inclua uma referência aos namespaces System.DirectoryServices e System.DirectoryServices.AccountManagement no projeto clicando sobre o projeto e a seguir em Add Reference:
Agora crie uma classe chamada ContaUsuario e defina o código abaixo :
using System;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
namespace CShp_ContaUsuarioLocal
{
public static class ContaUsuario
{
public static bool CriaContaUsuarioLocalWindows(string nomeUsuario,
string password,
string nomeExibido,
string descricao,
bool podeAlterarSenha,
bool senhaExpira)
{
try
{
PrincipalContext contexto = new PrincipalContext(ContextType.Machine);
UserPrincipal usuario = new UserPrincipal(contexto);
usuario.SetPassword(password);
usuario.DisplayName = nomeExibido;
usuario.Name = nomeUsuario;
usuario.Description = descricao;
usuario.UserCannotChangePassword = podeAlterarSenha;
usuario.PasswordNeverExpires = senhaExpira;
usuario.Save();
//inclui o usuário no grupo "Users" para exibir no painel de controle
GroupPrincipal grupo = GroupPrincipal.FindByIdentity(contexto, "Users");
grupo.Members.Add(usuario);
grupo.Save();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
public static void CriaContaUsuarioLocalWindows(string Nome, string Senha)
{
try
{
DirectoryEntry AD = new DirectoryEntry("WinNT://" +
Environment.MachineName + ",computer");
DirectoryEntry novoUsuario = AD.Children.Add(Nome, "user");
novoUsuario.Invoke("SetPassword", new object[] { Senha });
novoUsuario.Invoke("Put", new object[] { "Descricao", "Teste Cria Conta Usuario" });
novoUsuario.CommitChanges();
DirectoryEntry grp;
grp = AD.Children.Find("Administrators", "group");
if (grp != null)
{
grp.Invoke("Add", new object[]
{
novoUsuario.Path.ToString()
});
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
|
Nesta classe temos dois métodos sobrecarregados que permitem criar contas de usuários locais.
Agora é só alegria...
Abra o arquivo Program.cs e no método Main() defina o código que vai usar um dos dois métodos definidos acima para criar a conta de usuário local:
using System;
using static System.Console;
namespace CShp_ContaUsuarioLocal
{
class Program
{
public static string Nome;
public static string Senha;
public static string nomeExibido = "NovoUsuarioIncluido";
public static string descricao = "Novo Usuario incluido via Console";
public static bool podeAlterarSenha = true;
public static bool senhaExpira = true;
static void Main(string[] args)
{
WriteLine("Criar Conta de Usuário do Windows");
WriteLine("Informe o nome do usuário: ");
Nome = ReadLine();
WriteLine("Informe a senha do usuário :");
Senha = ReadLine();
try
{
//ContaUsuario.CriarContaUsuarioLocalWindows(Nome, Senha);
ContaUsuario.CriaContaUsuarioLocalWindows(Nome, Senha, nomeExibido, descricao, podeAlterarSenha, senhaExpira);
}
catch(Exception ex)
{
WriteLine("Erro " + ex.Message);
}
ReadLine();
}
}
}
|
Executando a aplicação
Executando a aplicação e informando o nome e a senha do usuário teremos o seguinte resultado:
Este artigo apenas demonstra o uso do recurso.
Para usar em um ambiente de produção um tratamento mais elaborado do código é necessário como a geração das senhas e o tratamento dos erros.
Pegue o
projeto completo aqui :
CShp_ContaUsuarioLocal.zip
(Disse Jesus) Não vos deixarei órfãos; voltarei para vós. João 14:18
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
ASP .NET MVC - Criando um simples formulário de login - Macoratti.net