Справочник по C#

    Исходники по языку программирования CSharp

    Проверка прав администратора у пользователя на локальной ПЭВМ: Справочник по C#

    /
    /
    /
    36 Views


          Данная статья выполняет проверку прав администратора с использованием объекта «WindowsPrincipal». Существует два способа создания данного объекта в зависимости от того, должен ли программный код многократно проводить проверку на основании ролей или она должна быть проведена только один раз.
          Для создания объекта «WindowsPrincipal», однократной проверки необходимо выполнить инициализацию объекта «WindowsIdentity», вызвав статический метод «WindowsIdentity.GetCurrent», который запрашивает текущую учетную запись Windows и помещает информацию об этой учетной записи в созданный объект идентификации. В следующем примере кода создается новый объект «WindowsIdentity», который затем инициализируется со значением, соответствующим текущему пользователю, прошедшему проверку подлинности.

    WindowsIdentity MyIdentity = WindowsIdentity.GetCurrent();

          Далее необходимо создать новый объект «WindowsPrincipal» и передать ему значение объекта «WindowsIdentity», созданного на предыдущем этапе.

    WindowsPrincipal MyPrincipal = new WindowsPrincipal(MyIdentity);

          Чтобы проверить присвоенные привилегии пользователю, воспользуемся методом «WindowsPrincipal.IsInRole». Метод определяет, относится ли текущий субъект, к группе пользователей Windows с заданным именем.
    Для проверки привилегий пользователя с помощью метода «IsInRole», необходимо воспользоваться перечислением «WindowsBuiltInRole», в который входят следующие роли:

    • AccountOperator – Операторы учетных записей осуществляют управление учетными записями пользователей на компьютере или в домене;
    • Administrator – Администраторы обладают полным и неограниченным доступом к компьютеру или домену;
    • BackupOperator – Операторы архива могут переопределять ограничения по безопасности для конкретных целей (резервное копирование или восстановление файлов);
    • Guest – Для пользователей с гостевой учетной записью существует больше ограничений, чем для обычных пользователей;
    • PowerUser – Опытным пользователям предоставлено большинство административных прав с некоторыми ограничениями. Поэтому наряду с сертифицированными приложениями опытные пользователи могут запускать приложения прежних версий;
    • PrintOperator – Операторы печати могут управлять принтером;
    • Replicator – Репликаторы поддерживают репликацию файлов в домене;
    • SystemOperator – Системные операторы управляют определенным компьютером;
    • User – Обычным пользователям не разрешено вносить в систему случайные или преднамеренные изменения. Поэтому обычные пользователи могут запускать только сертифицированные приложения. Запуск большинства приложений прежних версий им запрещен.

          В нашем случае для проверки прав администратора у текущего пользователя прошедшего проверку Windows, необходимо воспользоваться ролью «WindowsBuiltInRole.Administrator».
          Полный листинг проверки прав администратора у пользователя прошедшего проверку Windows, приведен ниже:

    public bool IsUserAdministrator()
    {
    bool isAdmin;
    try
    {
    System.Security.Principal.WindowsIdentity user =
    System.Security.Principal.WindowsIdentity.GetCurrent();
    System.Security.Principal.WindowsPrincipal principal = new
    System.Security.Principal.WindowsPrincipal(user);
    isAdmin = principal.IsInRole(
    System.Security.Principal.WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
    isAdmin = false;
    MessageBox.Show(ex.Message);
    }
    catch (Exception ex)
    {
    isAdmin = false;
    MessageBox.Show(ex.Message);
    }
    return isAdmin;
    }

          Метод возвращает значение «true», если пользователь обладает правами администратора, иначе «false». Ниже представлен пример вызова данного метода.

    if (IsUserAdministrator())
    MessageBox.Show("Данный пользователь обладает правами администратора",
    "Проверка привилегий пользователя",
    MessageBoxButtons.OK,
    MessageBoxIcon.Information);
    else
    MessageBox.Show("Данный пользователь обладает правами администратора",
    "Проверка привилегий пользователя",
    MessageBoxButtons.OK,
    MessageBoxIcon.Information);

    Проверка прав администратора у пользователя на локальной ПЭВМ: Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9