На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Как проверить имеет ли пользователь права администратора
    Здраствуйте!

    Вот имею некий код:
    ExpandedWrap disabled
              private bool CheckPermissionsAccess()
              {
                  AppDomain domain = Thread.GetDomain();
                  domain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
                  WindowsPrincipal user = (WindowsPrincipal)Thread.CurrentPrincipal;
       
                  return user.IsInRole(WindowsBuiltInRole.Administrator) || user.IsInRole(WindowsBuiltInRole.PowerUser);
              }

    Но он у меня не работает на Windows Vista - всегда возвращает false
    подскажите пожалуста альтернативу
      Попробуй так:
      ExpandedWrap disabled
                    WindowsIdentity identity = WindowsIdentity.GetCurrent();
                    WindowsPrincipal principal = new WindowsPrincipal (identity);
                    return principal.IsInRole (WindowsBuiltInRole.Administrator);


      Добавлено
      Цитата MSDN

      В Windows Vista привилегии пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. При попытке выполнить задачу, для которой требуются административные привилегии, можно динамически повысить уровень своей роли с помощью диалогового окна "Согласие". Программный код, выполняющий метод IsInRole, не отображает диалоговое окно "Согласие". Если пользователь имеет роль обычного пользователя, код возвращает результат false, даже если пользователь находится во встроенной группе "Администраторы". Перед запуском кода можно повысить уровень своих привилегий, щелкнув правой кнопкой мыши значок приложения и указав, что требуется выполнить запуск от имени администратора.
        не работает..

        также не работает этот тестовый код:
        ExpandedWrap disabled
          public bool isAdministrator()
                  {
                      WindowsPrincipal user = (WindowsPrincipal)Thread.CurrentPrincipal;
           
                      // If the user is in the administrators group.
                      if (user.IsInRole("Administrators"))
                      {
                          return true;
                      }
           
                      // Return false because the user isn't an administrator,
                      // or authenticated.
                      return false;
                  }

        Все при том что проверил десятый раз что на висте есть группа "Administrators" и текущий пользователь ей пренадлежит.
        Ех, жуть эта виста
        Сообщение отредактировано: 2005fs -
          Цитата 2005fs @
          Все при том что проверил десятый раз что на висте есть группа "Administrators" и текущий пользователь ей пренадлежит.

          теперь читаем то, что я указал в качестве цитаты с MSDN
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0219 ]   [ 15 queries used ]   [ Generated: 17.05.24, 16:31 GMT ]