Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Надо получить UserName и UserSID


Автор: yayuri 5.2.2012, 09:27
Помогите плиззззз smile !
Мне надо получить имена всех пользователей локальной системы (Win7) и их SID. Использую для этого NetUserEnum уровня USER_INFO_23 - НЕПОЛУЧАЕТСЯ. Если использую уровни ниже (0-11) то все идет, но мне надо и все SID пользователей знать.
Вот моя функция. Где ошибка???

Код

procedure GetLocalUserList(uList, uSid: 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_23 = record
    usri23_name,
    usri23_full_name,
    usri23_comment: PWideChar;
    usri23_flags: Dword;
    usri23_user_sid: PSID;
  end;
  PUSER_INFO_23 = ^TUSER_INFO_23;

var
  dwERead, dwETotal, dwRes, res, len: DWORD;
  inf: PUSER_INFO_23;
  info: Pointer;
  p: PChar;
  i: Integer;
  StringSid: LPSTR;

begin
  if (uList=nil) or (uSid=nil) then
    Exit;
  ulist.Clear;
  uSid.Clear;

  info:=nil;
  dwRes:=0;
  len:=NetUserEnum(nil,
    23,
    FILTER_NORMAL_ACCOUNT,
    @info,
    0,
    @dwERead,
    @dwETotal,
    @dwRes);
  info:=nil;
  dwRes:=0;
  res:=NetUserEnum(nil,
    23,
    FILTER_NORMAL_ACCOUNT,
    @info,
    len,
    @dwERead,
    @dwETotal,
    @dwRes);
  if (res<>NERR_SUCCESS) or (info=nil) then
    Exit;
  inf:=info;
  for i:=0 to dwERead-1 do begin
    uList.Add(WideCharToString(inf^.usri23_name));
    ConvertSidToStringSid(inf^.usri23_user_sid, StringSid);
    uSid.Add(StringSid);
    inc(inf)
  end;
  NetApiBufferFree(info);
end;


Автор: kovalеv 9.10.2012, 23:45
Может, обращаться к реестру?

Автор: MetalFan 10.10.2012, 07:26
kovalеv, может и надо, только зачем об этом писать модераторам???

Автор: bems 10.10.2012, 15:16
kovalеv, не туда ты жал уже дважды. В следующий раз будет читательский билет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)