Здравствуйте, 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.");
Отлично работе из консоли открытой в режиме администратора, но при обычном запуске не позволяет понять является ли юезер админом.
Как узнать, что текущий пользователь админ (т.е. что текущий токен можно элевировать до админа)?