Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как добавить пользователя в группу [D6, Win2k, WinXP]


_hunter_ ©   (2004-01-29 17:32:00) 

Здравствуйте. Как можно добавить пользователя в какую нибудь группу например "администраторы"?
Создать пользователя функцие NetUserAdd получается. А вот добавить его в группу (например администраторы) что-то ни как... возвращает код ошибки NERR_GroupExists. Что я делаю не так?

procedure TForm1.AddUserToGroupClick(Sender: TObject);
var
ServName:PWideChar;
UserName: PWideChar;
buf: GROUP_USERS_INFO_0;
nStatus: integer;
begin
ServName:='server';
UserName:=PWideChar(WideString(Form1.Edit1.Text));

//  NetApiBufferAllocate(1000,pointer(buf));
buf.grui0_name:='Administrators';
nStatus:=NetUserSetGroups(ServName,UserName,0,@buf,1);
//  NetApiBufferFree(@buf);
case nStatus of
  NERR_Success         : ShowMessage('Success');
  ERROR_ACCESS_DENIED  : ShowMessage('ACCESS DENIED');
  NERR_InvalidComputer : ShowMessage('Invalid computer');
  NERR_NotPrimary      : ShowMessage('Not primary');
  NERR_GroupNotFound   : ShowMessage('Group not found');
  NERR_UserNotFound    : ShowMessage('User not found');
else
  ShowMessage(IntToStr(nStatus));
end;
end;


_hunter_   (2004-02-02 07:42:00) [1]

всмысле так?
buf.grui0_name:=PWideChar(WideString('Administrators'));
не помогает...
может быть имя группы надо писать не так?


clickmaker   (2004-01-30 16:23:00) [2]

buf.grui0_name д.б. PWideChar


_hunter_   (2004-01-30 15:06:00) [3]

да нет не русская... в том то и дело...


clickmaker   (2004-01-30 12:53:00) [4]

А винда не русская часом? Тогда название группы по-другому звучит. Для универсальности лучше получать SID встроенной группы с помощью AllocateAndInitializeSid, а потом уже LookupAccountSid, чтобы имя группы узнать


_hunter_   (2004-01-30 05:47:00) [5]

JwaLmAccess, JwaLmErr, JwaLm, JwaWinNT

а можно и так:

function NetUserSetGroups; external netapi32lib name 'NetUserSetGroups';

NERR_Success = 0;
ERROR_ACCESS_DENIED = 5;
NERR_BASE = 2100;
NERR_InvalidComputer    = (NERR_BASE+251);
NERR_NotPrimary          = (NERR_BASE+126);
NERR_GroupNotFound       = (NERR_BASE+120);
NERR_UserNotFound        = (NERR_BASE+121);

_GROUP_USERS_INFO_0 = record
 grui0_name: LPWSTR;
end;

GROUP_USERS_INFO_0 = _GROUP_USERS_INFO_0;


AndersoNRules   (2004-01-29 22:08:00) [6]

A kakiye uniti ti zdesi ispolizueshi ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо