Re[5]: Детект прав админа у пользователя
От: Pavel Dvorkin Россия  
Дата: 30.03.24 02:53
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Так заработало. Но только с локальной учёткой. С доменной не работает.


VD>С если заменить LOGON32_LOGON_BATCH обратно на LOGON32_LOGON_INTERACTIVE, вроде работает. Но при этом\ bool isAdmin =

VD>
VD>windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
VD>

VD>начинает возвращать false.

Тут вот какая ситуация. Начиная с Vista, при включенном UAC при логине админа создаются 2 токена — один админский, другой юзеровский. Вроде как LOGON32_LOGON_INTERACTIVE возвращает юзеровский, а LOGON32_LOGON_BATCH — админский. В конце концов можно попробовать оба, тебе же не работать с ними потом надо, а только выяснить.

Ну а что касается ролей, то можно попробовать IsInRole по RID (это младшая часть SID)

DOMAINNAME\Administrator 0x1F4
DOMAINNAME\Domain Admins 0x200
BUILTIN\Administrators 0x220

https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsprincipal.isinrole?view=net-7.0#system-security-principal-windowsprincipal-isinrole(system-int32)

Если хоть что-то есть хоть в одном токене — ответ да.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.