C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение списка пользователей Active Directory  (Прочитано 5941 раз)
andrey4453
новенький
*

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 1


« : 09 июня 2009, 15:46:56 »

Здравствуйте. Мне необходимо получить список пользователей содержащихся в Active Directory, только имена, остальное
трогать не нужно. Вход программы будет под администратором домена, так что прав хватит. Прошу дать рабочий код на с++. Есть пример на Делфи, но его я не знаю.

Код
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,Stdctrls, Comctrls;
 
{$EXTERNALSYM NetUserEnum}
function NetUserEnum(servername: LPWSTR;
 level,
 filter: DWORD;
 bufptr: Pointer;
 prefmaxlen: DWORD;
 entriesread,
 totalentries,
 resume_handle: LPDWORD): DWORD; stdcall;
external 'NetApi32.dll' Name 'NetUserEnum';
function NetApiBufferFree(Buffer: Pointer): DWORD; stdcall;
external 'NetApi32.dll' Name 'NetApiBufferFree';
 
type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
    private
   { Private declarations }
 public
   { Public declarations }
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
const
 NERR_SUCCESS = 0;
 FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
 FILTER_NORMAL_ACCOUNT = $0002;
 
 FILTER_PROXY_ACCOUNT = $0004;
 FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
 FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
 FILTER_SERVER_TRUST_ACCOUNT = $0020;
type
 TUSER_INFO_10 = record
   usri10_name,
     usri10_comment,
     usri10_usr_comment,
     usri10_full_name: PWideChar;
 end;
 PUSER_INFO_10 = ^TUSER_INFO_10;
var
 dwERead, dwETotal, dwRes, res: DWORD;
 inf: PUSER_INFO_10;
 info: Pointer;
 p: PChar;
 i: Integer;
begin
 info := nil;
 dwRes := 0;
 res := NetUserEnum(nil,
   10,
   FILTER_NORMAL_ACCOUNT,
   @info,
   65536,
   @dwERead,
   @dwETotal,
   @dwRes);
 if (res <> NERR_SUCCESS) or (info = nil) then
   Exit;
 p := PChar(info);
 for i := 0 to dwERead - 1 do
 begin
   inf := PUSER_INFO_10(p + i * SizeOf(TUSER_INFO_10));
   memo1.Lines.Add(WideCharToString(PWideChar((inf^).usri10_name)));
   memo1.Lines.Add(WideCharToString(PWideChar((inf^).usri10_comment)));
   memo1.Lines.Add(WideCharToString(PWideChar((inf^).usri10_usr_comment)));
   memo1.Lines.Add(WideCharToString(PWideChar((inf^).usri10_full_name)));
 end;
 NetApiBufferFree(info);
end;
« Последнее редактирование: 19 октября 2011, 13:44:25 от volvo877 » Записан
oxotnik
Глобальный модератор
***

Сказали спасибо: +100/-15
Offline Offline

Сообщений: 2425


« Ответ #1 : 09 июня 2009, 15:52:06 »

http://www.codenet.ru/progr/visualc/winapifaq.php
20-й вопрос
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: