Как определить, является ли пользователь администратором, даже если он не имеет повышенных прав

В моем приложении C# мне нужно проверить, является ли текущий пользователь членом группы администраторов. Он должен быть совместим как с Windows XP, так и с Windows 7.

В настоящее время я использую следующий код:

bool IsAdministrator
{
    get
    {
        WindowsIdentity identity = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(identity);

        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
}

Проблема в том, что этот метод возвращает false, если приложение запущено в Windows 7 с включенным UAC как администратор без повышенных прав. Как определить, является ли пользователь администратором, даже если приложение запускается от имени администратора без повышенных прав?

10
задан markyd13 6 April 2012 в 14:53
поделиться