Re[10]: Детект прав админа у пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.06.24 16:11
Оценка:
Здравствуйте, m2user, Вы писали:

M>Но мне кажется, UserClaims проверить проще будет.


Да, согласен. Просто как-то не надежно выглядит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Детект прав админа у пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.06.24 16:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Поэтому если нужно узнать, является ли юзер админом из программы, запущенной без прав админа, то можно, конечно, сделать в ней logonUser с админовским входом как в прошлый раз


LogonUser подразумевает ввод данных логина. Это не то.

PD>Либо посмотри тут

PD>https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
PD>IsCurrentUserAdmin
PD>или
PD>IsCurrentUserInAdminGroup

Это то, что предложил m2user здесь
Автор: m2user
Дата: 05.06 20:22
. Похоже действительно самый простой способ. У нас был рабочий вариант, но он в первый раз втыкал на несколько секунд.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Детект прав админа у пользователя
От: Pavel Dvorkin Россия  
Дата: 07.06.24 02:36
Оценка:
Здравствуйте, VladD2, Вы писали:


PD>>IsCurrentUserInAdminGroup


VD>Это то, что предложил m2user здесь
Автор: m2user
Дата: 05.06 20:22
. Похоже действительно самый простой способ. У нас был рабочий вариант, но он в первый раз втыкал на несколько секунд.


Видимо, да. Единственное, что тут можно сделать — проверить, принадлежит ли юзер к группе админов.
Если нет домена, то все должно работать.
Если же он есть, то может быть сложнее. Он может быть членом Domain Admins, а она в свою очередь входит в группу локальных админов после загрузки компьютера.
Поэтому по ссылке выше в одном из примеров делаются все проверки

return authGroups.Any(principal =>
principal.Sid.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid) ||
principal.Sid.IsWellKnown(WellKnownSidType.AccountDomainAdminsSid) ||
principal.Sid.IsWellKnown(WellKnownSidType.AccountAdministratorSid) ||
principal.Sid.IsWellKnown(WellKnownSidType.AccountEnterpriseAdminsSid));
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.