Назад | Перейти на главную страницу

Как принудительно обновить членство пользователя в группе в Windows 7?

Я пишу веб-приложение, которое использует .NET Windows Authentication и полагается на членство в группе пользователей для авторизации их в различных областях веб-сайта. Прямо сейчас я нахожусь на машине разработчика, которая НЕ ЯВЛЯЕТСЯ частью домена и не использует AD, вместо этого я просто использую локальные группы пользователей. В общем, все работает нормально как есть.

Однако, когда я тестирую приложение, мне нужно добавлять и удалять роли в моей учетной записи, чтобы убедиться, что все работает. Когда я добавляю роль, кажется, что она не распространяется, пока я не выйду из Windows и не войду снова.

Можно ли принудительно обновить членство в группе без выхода из системы?

taskkill.exe /F /IM explorer.exe
runas /user:%USERDOMAIN%\%USERNAME% explorer.exe

Это убьет проводника, затем снова откроется с вашей учетной записью ... Он предложит вам ввести пароль и даст вам новый токен, тем самым обновив ваше членство.

Это сложно выполнить в масштабе всей системы, но возможно с отдельными исполняемыми файлами, уничтожив их процесс и перезапустив их под учетными данными пользователя.

Когда вы входите в систему, вы, среди прочего, получаете токен, отражающий ваше членство в группе. Единственный способ обновить этот токен - войти в систему.

У меня была аналогичная ситуация с веб-сайтом, который полагался на членство пользователя в AD, чтобы разрешить вход на сайт. Одна вещь, которую следует рассмотреть, - это заставить веб-сервер выполнить аутентификацию / запрос к серверу AD с предоставленными им учетными данными; если веб-сервер имеет доступ к AD и просто запрашивает у сервера, входит ли пользователь в группу XYZ, они получат список прямо из AD, а не из токена входа пользователя, который требует входа / выхода для получения нового токен с соответствующими привилегиями.

Я знаю, что ваша машина разработчика прямо сейчас из описания не имеет этого доступа, но похоже, что вы имеете в виду, что когда вы ее развертываете, вам нужна эта функция.

Если вы полагаетесь на токен, вам придется выйти и снова войти.

Существует сценарий, позволяющий сделать это полностью через командную строку; ты можешь использовать klist.

klist purge
  • Открыть диспетчер задач
  • Убить Explorer.exe (каждый)
  • Щелкните Файл> Новая задача (Выполнить ...)
  • Введите CMD
  • В командной строке введите «RunAs / user: \ explorer.exe.

Готово.