GetLocalUserList - возвращает список пользователей (Windows NT, Windows 2000)
unit Func;
interfaceuses Sysutils, Classes, Stdctrls, Comctrls, Graphics, Windows;
////////////////////////////////////////////////////////////////////////////////{$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 {LPVOID}): DWORD; stdcall;
external 'NetApi32.dll' Name 'NetApiBufferFree';
////////////////////////////////////////////////////////////////////////////////procedure GetLocalUserList(ulist: TStringList);
implementation//------------------------------------------------------------------------------// возвращает список пользователей локального хоста//------------------------------------------------------------------------------procedure GetLocalUserList(ulist: TStringList);
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;
beginif ulist = nilthen
Exit;
ulist.Clear;
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 dobegin
inf := PUSER_INFO_10(p + i * SizeOf(TUSER_INFO_10));
ulist.Add(WideCharToString(PWideChar((inf^).usri10_name)));
end;
NetApiBufferFree(info);
end;
end.
В статье рассмотрен функционал получения списка пользователей на локальном хосте с помощью процедуры GetLocalUserList, которая использует библиотеку NetApi32.dll и возвращает список пользователей в виде строки.
Комментарии и вопросы
:: 2010-04-19 21:37:38 :: re:Получить список пользователей
Большое человеческое спасибо за код !
Прочитал SDK там ссылки на какой то winnt.h которого в пакете Delphi ненаблюдаю.
------------
Уточняющий вопрос.
Список списком, а каким образом получить признак типа ЛОКАЛЬНОЙ учётной записи (кто АДМИН кто ГОСТЬ кто Пользователь)
:: 2010-04-25 12:43:16 :: re:Получить список пользователей
winnt.h - это заголовок файла с функциями для c++ в delphi его нет. Использовать его можно только для визуального определения формата параметров функций.
Про привилегии описано в http://www.kansoftware.ru/?tid=3984
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.