CRIANDO USUÁRIO NO ACTIVE DIRECTORY
PELO DELPHI
Para criar uma conta de usuário no Windows você precisa usar o ADSI (Active Dorectory Service Interface) da Microsoft que está disponível somente para Windows 200 ou superior. O ADSI nos dá uma interface COM para a interação com AD (Active Directory).
Vamos ver como é feita essa interação com o AD:
Primeiro você precisa importar a biblioteca do ADSI, vá ao menu “Project” e depois em “Import Type Library”, clique em “Add..” e localize o arquivo “activeds.tlb” que se encontra no diretório “System32”. Ex.: “c:\winnt\system32\activeds.tlb”.
Feito isso clique no botão “Create Unit” para que o Delphi mapeie todas as funções do objeto COM, o Delphi criou a unit no diretório “Imports” do seu Delphi com o nome “activeds_tlb.pas”, caso você esteja usando o Delphi 7 o caminho completo ficaria assim: “C:\Arquivos de programas\Borland\Delphi7\Imports\activeds_tlb.pas”.
Crie um novo projeto no seu Delphi e adicione o arquivo “activeds_tlb.pas” ao seu projeto, na seção “Uses” do seu projeto inclua as bibliotecas: ActiveX, Activeds_tlb e ComObj.
Insira um botão e no evento click do botão digite o seguinte:
Para criar um usuário:
Procedure Tform1.btnCriarUsuarioClick(sender:Tobject);
Var
user: IADsUser;
comp: IADsContainer;
Begin
comp := GetObject(‘WinNT://nome_do_dominio,computer’) as IADsContainer;
User := comp.Create(‘user’, novo_usuario);
User.SetInfo;
End;
Substitua “nome_do_dominio” pelo nome do seu “domínio” e “novo_usuario” pelo usuário que você deseja criar.
Para criar um usuário e adiciona-lo a um grupo:
procedure TForm1.CriarEAddClick(Sender: TObject);
var
user:IADsUser;
cont:IADsContainer;
group:IADsGroup;
begin
group := GetObject(WinNT://nome_do_dominio/+nome_do_grupo) as IADsGroup;
cont := GetObject(WinNT://nome_do_dominio, computer) as IADsContainer;
user := cont.Create(user, novo_usuario) as IADsUser;
user.SetPassword(‘123456’); //definir uma senha
user.SetInfo;
group.Add(WinNT://nome_do_dominio/+novo_usuario);
end;
Para adicionar um usuário existe a um domínio:
procedure TForm1.btnAddIntoDomainClick(Sender: TObject);
var
group:IADsGroup;
begin
group := GetObject(WinNT://nome_do_dominio/+nome_do_grupo) as IADsGroup;
group.Add(WinNT://nome_do_dominio/+nome_do_usuario);
end;
Segue a baixo o código da função “GetObject”:
var
moniker:Imoniker;
Eaten:integer;
Bindcontext:Ibindctx;
dispatch:IDispatch;
begin
OleCheck(CreateBindCtx(0,Bindcontext));
OleCheck(MkParseDisplayName(BindContext,PWideChar(WideString(Name)),Eaten,Moniker));
OleCheck(Moniker.BindToObject(BindContext,nil,Idispatch,Dispatch));
Result := Dispatch;
end;
CONCLUSÃO
Para fazer qualquer alteração de conta você ter direitos de incluir usuários no AD, caso você tenha a senha do administrador de rede você pode usar o “Impersonate” para rodar instruções com outra conta de usuário.
Este simples artigo mostra que é possível fazer sua aplicação interagir com AD.
Obs.: também é possível trabalhar com o “LDAP”.