Консультация № 68541
25.12.2006, 16:40
0.00 руб.
0 1 1
Доброго вермени суток, уважаемые!
У друга-администратора возник ряд проблем связанный с добавлением пользователя, повышением прав пользователя во время работы и т.д.

Я понимаю, что это можно сделать на Win Api, но зная монструозное их количество, даже не знаю откуда начать искать.

Может, к примеру, эти фунцкии начинаются с префикса admin?

Возможно вы подскажите?

Обсуждение

Неизвестный
26.12.2006, 09:14
общий
это ответ
Здравствуйте, Шибанов Александр Константинович!
Вот, к примеру, я добавляю пользователей следующим образом:

uses ..., ActiveX, ActiveDs_TLB, ComObj;

function GetObject(const Name: string): IDispatch;
var
Moniker: IMoniker;
Eaten: integer;
BindContext: IBindCtx;
Dispatch: IDispatch;
begin
OleCheck(CreateBindCtx(0, BindContext));
OleCheck(MkParseDisplayName(BindContext,
PWideChar(WideString(Name)),
Eaten,
Moniker));
OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch,
Dispatch));
Result := Dispatch;
end;
function AddNewUser(ComputerName,NewAccount: string): string;
var
Usr: IADsUser;
Grp: IADsGroup;
Comp: IADsContainer;
Group: string;
begin
Result:=‘Ошибок нет‘;
case Lang of
1049: Group:= ‘Администраторы‘;
else Group:= ‘Administrators‘;
end;
try
Comp := GetObject(‘WinNT://‘+ComputerName+‘,computer‘) as
IADsContainer;
Usr := Comp.Create(‘user‘, NewAccount) as IADsUser;
Usr.SetInfo;
except
on E: Exception do begin
Result:=‘Create new user. Ошибка = ‘+E.Message;
end;
end;
try
Grp := GetObject(‘WinNT://‘+ComputerName+‘/‘+Group) as IADsGroup;
except
on E: Exception do begin
Result:=‘Get group. Ошибка = ‘+E.Message;
end;
end;
try
Grp.Add (‘WinNT://‘+ComputerName+‘/‘+NewAccount);
except
on E: Exception do begin
Result:=‘Create user to group. Ошибка = ‘+E.Message;
end;
end;
end;

ActiveDs_TLB.pas создаётся из библиотеки типов C:\WINDOWS\system32\activeds.tlb.
Форма ответа