Подтвердить что ты не робот

С# Проверить, запускается ли как администратор

Возможный дубликат:
Проверить, является ли текущий пользователь администратором

Мне нужно проверить, работает ли приложение (написанное на С#, работающее под управлением Windows XP/Vista/7) как администратор (как в правой клавише .exe → Запуск от имени администратора, либо Запуск от имени администратора на вкладке "Сочетание" ) в разделе Свойства).

У меня есть googled и поиск StackOverflow, но я не могу найти рабочего решения.

Моя последняя попытка:

if ((new WindowsPrincipal(WindowsIdentity.GetCurrent()))
         .IsInRole(WindowsBuiltInRole.Administrator))
{
    ...
}
4b9b3361

Ответ 1

Попробуй это

public static bool IsAdministrator()
{
    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

Это выглядит функционально так же, как ваш код, но выше работает для меня...

делать это функционально (без ненужных временных переменных)...

public static bool IsAdministrator()
{
   return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
             .IsInRole(WindowsBuiltInRole.Administrator);
}  

или, используя свойство выраженного тела:

public static bool IsAdministrator =>
   new WindowsPrincipal(WindowsIdentity.GetCurrent())
       .IsInRole(WindowsBuiltInRole.Administrator);