![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение информации о правах текущего пользователя
AlexanderV © (2002-01-23 10:15:00)Люди!!!
Поскажите, пожалуйста, как получить информацию о категории текущего пользователя (administrators, guests, ...) под Win NT
(4, 2000)
Егор (2002-01-25 02:50:00) [1]Tosov
Я имел ввиду, что эта функция и все что с ней связано (структуры и т.п.) не описана в Дельфи (Windows.pas). Т.е. Борланд посчитал, что это тут не надо, а в С++ Builder Professional описание этих функций и структур есть.
А вобще за ответ спасибо :-))
Tosov (2002-01-24 19:54:00) [2]Егор
Эта функция не в Delphi и не в C++. Она в WindowsNT!!!
Если тебе надо работать с ней под Delphi или нажми на ссылочку в моем посте или зайди на http://www.delphi-jedi.orgи скачай переводы сишных фаайлов (не помню как называется).
Севостьянов Игорь (2002-01-24 16:32:00) [3]В Дельфийском варианте будет, что-то типа
function FNetLocalGroupAddMembers(ServerName, GroupName: string; Level: DWord;
Buffer: Pointer;
TotalEntries: DWord): NET_API_STATUS;
var
S, G : TLMWideChar;
begin
Result := 0;
if IsNetApi32 then begin
if (@_NetLocalGroupAddMembers = nil) then
@_NetLocalGroupAddMembers := GetProcAddress(NETAPI32, "NetLocalGroupAddMembers");
if (@_NetLocalGroupAddMembers <> nil) then begin
{ determine if UNC identifiers needed }
ServerName := ServerUncName(ServerName);
S.Value := nil;
G.Value := nil;
try
{ allocate the unicode server name }
CvtToWideChar(ServerName, S);
{ allocate the unicode group name }
CvtToWideChar(GroupName, G);
{ call the API }
Result := _NetLocalGroupAddMembers(S.Value, G.Value, Level, Buffer,
TotalEntries);
finally
FreeMem(S.Value, S.Length);
FreeMem(G.Value, G.Length);
end;
end else
RaiseStWin32Error(EStNetException, GetLastError);
end else begin
{ EStNetException }
RaiseStWin32ErrorEx(EStNetException, GetLastError, NETAPI32DLL);
end;
end;
Севостьянов Игорь (2002-01-24 16:29:00) [4]Вообще-то лучше почитать иногда MSDN, иногда помогает !!!
А все функции которые возможно тебе понадобяться кроме этих - функции NetAPI
The NetLocalGroupAddMembers function adds membership of one or more existing user accounts or global group accounts to an existing local group. The function does not change the membership status of users or global groups that are currently members of the local group.
NET_API_STATUS NetLocalGroupAddMembers(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE buf,
DWORD totalentries
);
Есть вопросы еще ? Пиши на мыло ...
Егор (2002-01-24 11:18:00) [5]А может кто знает как добавить юзера в локальную группу?
Например в админы.
Егор (2002-01-24 11:04:00) [6]Точнее сказать в Дельфях ее нужно самому вызывать из DLL.
Егор (2002-01-24 11:01:00) [7]RE: Tosov
Интересно, где же в Дельфях такая функция?
NetUserGetInfo
Я не нашел. В С++ - пожалуйста.
Tosov (2002-01-23 23:36:00) [8]А можно попробовать так
NetUserGetInfo (Nil, login, 11, @info)
if Info^.usri11_priv=2 then Admin;
if Info^.usri11_priv=1 then User;
if Info^.usri11_priv=0 then Guest;
http://delphi.xonix.ru/faq/users/isadmin01.shtml
Rem (2002-01-23 10:50:00) [9]funcionGetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength): boolean;
Для получения информации о пользователе и группе в TokenInformationClass надо передать TOKEN_USER, TOKEN_GROUPS, при этом у запрашивающего процесса должна быть привилегия TOKEN_QUERY