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”.

 

activedirectory.jpg 

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”:

 

function TForm1.getobject(const name: string): idispatch;
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”.