Re[6]: Детект прав админа у пользователя
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.06.24 17:02
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


Тут еще такой вопрос возник. Получить нужный токен с помощью LogonUser я смог.

Но есть еще задача проверить, что текущий юзер является админом. И тут тоже вылезает проблема с тое о чем ты написал выше. Вот такой код:
    using var windowsIdentity = WindowsIdentity.GetCurrent();
    var windowsPrincipal = new WindowsPrincipal(windowsIdentity);
    var isAdmin = windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
    Console.WriteLine($"You are is {(isAdmin ? "" : "not ")}administrator.");

Отлично работе из консоли открытой в режиме администратора, но при обычном запуске не позволяет понять является ли юезер админом.

Как узнать, что текущий пользователь админ (т.е. что текущий токен можно элевировать до админа)?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.