Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.08.2008, 09:36
VitAngel VitAngel вне форума
Прохожий
 
Регистрация: 15.08.2008
Сообщения: 1
Репутация: 10
По умолчанию Администратор Домена

День добрый!

Подскажите, пожалуйста, как я могу проверить является ли пользователь администратором домена.

Заранее благодарю
Ответить с цитированием
  #2  
Старый 15.08.2008, 12:18
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

зайди через RDP на контроллер если пустит то админ. А так добжны быть роли.
Администратор.
Админ домена.
и в роде надо еще
Админ предприятия.
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #3  
Старый 15.08.2008, 20:07
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от VitAngel
День добрый!

Подскажите, пожалуйста, как я могу проверить является ли пользователь администратором домена.

Заранее благодарю
Код:
// Есть ли у юзера права админа
const
 SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
                              (Value: (0, 0, 0, 0, 0, 5));
 SECURITY_BUILTIN_DOMAIN_RID = $00000020;
 DOMAIN_ALIAS_RID_ADMINS     = $00000220;

function IsAdmin: Boolean;
var
 x: integer;
 bSuccess: BOOL;
 hAccessToken: THandle;
 ptgGroups: PTokenGroups;
 dwInfoBufferSize: DWORD;
 psidAdministrators: PSID;
begin
 Result:=false;
 bSuccess:=OpenThreadToken(GetCurrentThread, TOKEN_QUERY, true, hAccessToken);
 if not bSuccess
 then
  begin
   if GetLastError=ERROR_NO_TOKEN
   then bSuccess:=OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
  end;
 if bSuccess
 then
  begin
   GetMem(ptgGroups, 1024);
   bSuccess:=GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);
   CloseHandle(hAccessToken); 
   if bSuccess
   then
    begin
     AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
       SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
       0, 0, 0, 0, 0, 0, psidAdministrators);
     {$R-}
     for x:=0 to ptgGroups.GroupCount-1 do
      if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid)
      then
       begin
        Result:=true;
        Break;
       end;
     {$R+}
    FreeSid(psidAdministrators);
   end;
  FreeMem(ptgGroups);
 end;
end;

Код:
if IsAdmin
then Label8.Caption:='Admin rules: true.'
else Label8.Caption:='Admin rules: false.';
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter