Como você força uma atualização para a associação ao grupo de um usuário no Windows 7?

27

Estou escrevendo um aplicativo da Web que usa a autenticação do Windows .NET e conta com a participação no grupo de um usuário para autorizá-lo a várias áreas do site. No momento, estou em uma máquina de desenvolvimento que não faz parte de um domínio e não está usando o AD, mas apenas grupos de usuários locais. Em geral, isso está funcionando bem como está.

No entanto, ao testar o aplicativo, preciso adicionar e remover funções da minha conta de usuário para verificar se as coisas estão funcionando. Quando adiciono uma função, ela parece não se propagar até eu sair do Windows e entrar novamente.

É possível forçar uma atualização na associação ao Grupo sem precisar fazer logoff?

kingdango
fonte
3
Você quer dizer desconectar-se da estação ou do site?
Dan
Bom ponto, atualizei minha pergunta para esclarecer. Eu tenho que sair da minha conta de usuário do Windows (sair do Windows) e entrar novamente.
kingdango
Força as atualizações do sistema nas associações ao grupo. Depois de executar a tarefa de comando kill explorer novamente, execute o explorer normalmente. você também terá um novo token de segurança na sua nova instância do explorer.

Respostas:

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

Isso matará o explorer e reabrirá com sua conta de usuário ... Ele solicitará sua senha e fornecerá um novo token, atualizando sua associação.

Matt Brown
fonte
11
Isso parece funcionar, mas descobri que todas as conexões de unidades mapeadas são interrompidas.
SomeGuy
2
não funciona para mim no Windows 10 Pro
Dave Cousineau
Veja também: woshub.com/… . Para computador klist -lh 0 -li 0x3e7 purge, para usuário klist purge. NB: Eu não tentei esses comandos sozinho; apenas repetindo informações do artigo vinculado.
9789 John DeBurnan
10

Isso é difícil de executar em uma escala de todo o sistema, mas é possível com arquivos executáveis ​​individuais, matando seu processo e reiniciando-o com as credenciais do usuário.

Ao fazer logon, você recebe um token refletindo sua participação no grupo, entre outras coisas. A única maneira de atualizar esse token é fazer login.

MDMarra
fonte
Se esse for o caso, é uma chatice, dificultando um pouco meus testes. Obrigado pela compreensão ... Espero que outro usuário tenha uma resposta melhor, mas acho que pelo seu representante de mais de 15k você sabe do que está falando.
kingdango
2
@kingdango você sempre pode usar runaspara executar o processo como um usuário diferente do seu e manipular a associação ao grupo desse usuário de teste. Toda vez que você fechar e reiniciar o processo, runasele deve criar uma nova sessão, que deve refletir a associação do grupo alterada. Eu não testei isso, mas em teoria deve funcionar dessa maneira.
MDMarra
Isso é difícil por causa do meu ambiente de desenvolvimento, mas vale a pena explorar. Obrigado pela resposta rápida e atenciosa, Mark.
kingdango
4

Eu tive uma situação semelhante a um site que contava com a associação de um usuário no AD para permitir o login no site. Uma coisa a considerar é fazer com que o servidor Web faça a autenticação / consulta ao servidor AD com suas credenciais fornecidas; se o servidor da Web tiver acesso ao AD e apenas consultar o servidor para saber se o usuário está no grupo XYZ, eles obterão uma lista diretamente do AD, não do token de login do usuário que exige logon / logoff para obter um novo token com privilégios adequados.

Eu sei que a sua máquina de desenvolvimento agora, a partir da descrição, não tem esse acesso, mas parecia que você quis dizer que quando a implanta, precisa dessa funcionalidade.

Se você confiar no token, precisará fazer logoff e logon novamente.

Bart Silverstrim
fonte
Obrigado pela resposta atenciosa. Essa é uma boa maneira de chegar ao problema. Em situações normais, fico feliz em esperar até que o usuário receba controle de acesso atualizado, mesmo que isso signifique que eles precisam fazer logoff e logon em sua máquina novamente. É apenas o cenário de teste em que isso pode ser um fardo, mas na verdade não é grande coisa. Honestamente, levei mais tempo para pesquisar um atalho. :-)
kingdango 30/11
11
Também pode ser útil, dependendo do cenário. Se o servidor estiver consultando o controlador de domínio diretamente, isso significa que as alterações "migram" quase imediatamente, portanto, se alguém obtiver acesso cortado ou adicionado, não será necessário um ciclo de logon / logout do cliente. Isso facilita um pouco a equipe de TI.
Bart Silverstrim
3

Existe uma maneira com script de fazer isso completamente através da linha de comando; você pode usar o klist .

klist purge
Nixphoe
fonte
Purging tickets destroys all tickets that you have cached, so use this attribute with caution. It might stop you from being able to authenticate to resources. If this happens, you will have to log off and log on again.Does [Purge](https://technet.microsoft.com/en-us/library/hh134826.aspx?f=255&MSPPError=-2147217396)regrab os tokens embora? ou apenas joga fora os já existentes, deixando-o sem nada? Se você não possui tokens, o relançamento do explorer (ou qualquer processo que precise de um token) os reabre novamente automaticamente?
22415 Brad
Ele regenerará o token quando você solicitar novos recursos. Eu usei isso com bastante frequência ao tentar atualizar grupos de segurança para usuário e estação de trabalho remotos ao adicionar associação ao grupo aos objetos do AD.
Nixphoe
oh agradável (e explosão eu errei a formatação em que o comentário .... você começa a idéia)
Brad
-2
  • Abra o Gerenciador de tarefas
  • Mate o Explorer.exe (cada um)
  • Clique em Arquivo> Nova Tarefa (Executar ...)
  • Digite no CMD
  • No prompt de comando, digite "RunAs / user: \ explorer.exe

Feito.

flip66
fonte
2
Não, errado. Por favor, leia a pergunta.
precisa
4
@ HopelessN00b Parece certo que é basicamente o que se torna a resposta aceita.
21415 Brad
11
@ Brad, que não tem nada a ver com se é certo ou errado. O MDMarra está certo (como Bart), isso (e a resposta aceita) está errado. Esse processo não força o sistema a atualizar participações em grupos.
HopelessN00b
11
@ HopelessN00b você está certo, como descobri mais tarde. A reinicialização era a única maneira de atualizar as associações. Infelizmente, ambas as respostas estão erradas.
Brad
11
O logoff e o logon novamente devem fazer o truque, sem necessidade de reinicialização. As associações ao grupo são aplicadas no login.
Charlie Wilson