|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Администратор Домена
День добрый!
Подскажите, пожалуйста, как я могу проверить является ли пользователь администратором домена. Заранее благодарю |
#2
|
|||
|
|||
зайди через RDP на контроллер если пустит то админ. А так добжны быть роли.
Администратор. Админ домена. и в роде надо еще Админ предприятия. Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит Прапор: вы не попали ни один раз. Программист: Пули вылетели, проблемы у вас. |
#3
|
||||
|
||||
Цитата:
Код:
// Есть ли у юзера права админа 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.'; |