none
integração com Active Directory RRS feed

  • Pergunta

  • Bom dia,

     

    Existe alguma forma de se conectar no Active Directory e retornar em uma combo os nomes de usuários que estão cadastrados no active directory ?

     

    Obrigado.

    terça-feira, 2 de outubro de 2007 12:56

Respostas

Todas as Respostas

  • Nunca usei, mas experimente por LDAP: http://www.freevbcode.com/ShowCode.Asp?ID=710

    domingo, 7 de outubro de 2007 17:47
    Moderador
  • public DataSet RetornaUsuarios()
        {
            DirectoryEntry entry = new DirectoryEntry("LDAP://RootDSE");
            string str = (string) entry.Properties["DefaultNamingContext"].Value;
            DirectoryEntry searchRoot = new DirectoryEntry("LDAP://" + str);
            DirectorySearcher searcher = new DirectorySearcher(searchRoot);
            DataTable table = new DataTable("Colaboradores");
            searcher.Filter = "(&(objectclass=user)(objectcategory=person)(userAccountControl=512))";
            SortOption option = new SortOption("Name", SortDirection.Ascending);
            searcher.Sort = option;
            searcher.PageSize = 0x3e8;
            searcher.SizeLimit = 0x3e8;
            searcher.ServerTimeLimit = TimeSpan.FromMinutes(10.0);
            searcher.PropertiesToLoad.Add("samAccountName");
            searcher.PropertiesToLoad.Add("Name");
            table.Columns.Add("Id", typeof(int));
            table.Columns.Add("AccountName", typeof(string));
            table.Columns.Add("Nome", typeof(string));
            foreach (SearchResult result in searcher.FindAll())
            {
                if (((result.Properties["samAccountName"].Count > 0) & (result.Properties["Name"].Count > 0)))
                {
                    DataRow row = table.NewRow();
                    row["AccountName"] = result.Properties["samAccountName"][0].ToString();
                    row["Nome"] = result.Properties["Name"][0].ToString();
                    row["id"] = ws_mssql.RetornaId((string) row["AccountName"]);
                    table.Rows.Add(row);
                }
            }
            DataSet set = new DataSet("Colaboradores");
            set.Tables.Add(table);
            return set;
        }

    Assim você consegue retornar atraves de um datatable todos os usuarios...

    terça-feira, 18 de março de 2008 20:54
  • Existem + 2 formas de obter os usuários do Active Directory.

    1ª - Abra usuários e computadores do Active Directory > Consultas Salvas > Crie uma consulta escolhendo usuário e como critéio de filtragem escolha nome e a opção presente. Após ter feito isso clique com o botão direito na consulta e escolha a opção exportar > arquivo CSV (excel). Com isso você terá uma planilha com todos os usuários do AD, e poderá então trabalhar no próprio excel jogando os dados numa combo.

    2ª - Comando CSVDE ou LDIFDE.

    De qualquer forma essas opções não são atualizáveis automaticamente, acredito que a opção LDAP já mencionada seja a mais correta para utilização no VBA.

    []s.

        
    quinta-feira, 20 de março de 2008 16:18