Comment forcer une mise à jour de l'appartenance à un groupe d'un utilisateur dans Windows 7?

27

J'écris une application Web qui utilise l'authentification Windows .NET et s'appuie sur l'appartenance à un groupe d'utilisateurs pour les autoriser dans diverses zones du site Web. En ce moment, je suis sur une machine de développement qui ne fait pas partie d'un domaine et n'utilise pas AD, mais j'utilise simplement des groupes d'utilisateurs locaux. En général, cela fonctionne bien tel quel.

Cependant, lorsque je teste l'application, j'ai besoin d'ajouter et de supprimer des rôles dans mon compte d'utilisateur pour vérifier que les choses fonctionnent. Lorsque j'ajoute un rôle, il ne semble pas se propager jusqu'à ce que je me déconnecte de Windows et me reconnecte.

Est-il possible de forcer une mise à jour de l'appartenance au groupe sans avoir à se déconnecter?

kingdango
la source
3
Voulez-vous dire déconnecter la station ou le site Web?
Dan
Bon point, j'ai mis à jour ma question pour clarifier. Je dois me déconnecter de mon compte utilisateur Windows (se déconnecter de Windows) et me reconnecter.
kingdango
Il force les mises à jour du système aux appartenances aux groupes. Après avoir exécuté à nouveau la tâche de commande kill explorer, puis exécutez l'explorateur normalement. vous aurez également un nouveau jeton de sécurité dans votre nouvelle instance d'explorateur.

Réponses:

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

Cela tuera l'explorateur, puis rouvrira avec votre compte d'utilisateur ... Il vous demandera votre mot de passe et vous obtiendrez un nouveau jeton, mettant ainsi à jour votre adhésion.

Brun mat
la source
1
Cela semble fonctionner, mais j'ai constaté que toutes les connexions de lecteur mappées étaient rompues.
SomeGuy
2
ne fonctionne pas pour moi dans Windows 10 Pro
Dave Cousineau
Voir aussi: woshub.com/… . Pour ordinateur klist -lh 0 -li 0x3e7 purge, pour utilisateur klist purge. NB: je n'ai pas essayé ces commandes moi-même; juste répéter les informations de l'article lié.
JohnLBevan
10

C'est difficile à réaliser à l'échelle du système, mais cela est possible avec des fichiers exécutables individuels en tuant leur processus et en les relançant sous les informations d'identification de l'utilisateur.

Lorsque vous vous connectez, vous recevez un jeton reflétant, entre autres, votre appartenance à un groupe. La seule façon d'actualiser ce jeton est de vous connecter.

MDMarra
la source
Si c'est le cas, c'est une déception, cela va un peu gêner mes tests. Merci pour la perspicacité ... J'espère qu'un autre utilisateur aura une meilleure réponse mais je suppose que votre représentant 15k + vous savez de quoi vous parlez.
kingdango
2
@kingdango vous pouvez toujours utiliser runaspour exécuter le processus en tant qu'utilisateur différent du vôtre et pour manipuler l'appartenance au groupe de cet utilisateur de test. Chaque fois que vous fermez et relancez le processus, runasil doit créer une nouvelle session, qui doit refléter l'appartenance au groupe modifié. Je n'ai pas testé cela, mais en théorie, cela devrait fonctionner de cette façon.
MDMarra
C'est difficile à cause de mon environnement de développement, mais cela vaut la peine d'être exploré. Merci pour la réponse rapide et réfléchie Mark.
kingdango
4

J'ai eu une situation similaire d'un site Web qui comptait sur l'adhésion d'un utilisateur à AD pour permettre la connexion au site Web. Une chose à envisager est de demander au serveur Web de faire l'authentification / requête auprès du serveur AD avec les informations d'identification fournies; si le serveur Web a accès à AD et demande simplement au serveur si l'utilisateur est dans le groupe XYZ, il obtiendra une liste directement depuis AD, pas depuis le jeton de connexion de l'utilisateur qui nécessite une ouverture / fermeture de session pour obtenir une nouvelle jeton avec des privilèges appropriés.

Je sais que votre machine de développement à partir de la description n'a pas cet accès, mais cela ressemblait à ce que vous voulez dire lorsque vous le déployez, vous avez besoin de cette fonctionnalité.

Si vous comptez sur le jeton, vous devrez vous déconnecter puis vous reconnecter.

Bart Silverstrim
la source
Merci pour la réponse réfléchie. C'est une bonne façon de régler le problème. Dans des situations normales, je suis plus qu'heureux d'attendre que l'utilisateur reçoive un contrôle d'accès mis à jour, même si cela signifie qu'il doit se déconnecter et se reconnecter à sa machine. Ce n'est que le scénario de test où cela peut être un fardeau, mais ce n'est vraiment pas si grave. Honnêtement, il m'a fallu plus de temps pour rechercher un raccourci. :-)
kingdango
1
Cela peut aussi être utile, selon le scénario. Si le serveur interroge directement le contrôleur de domaine, cela signifie que les modifications "migrent" presque immédiatement, donc si quelqu'un obtient un accès coupé ou ajouté, cela ne prend pas de cycle de connexion / déconnexion client. Cela facilite un peu la tâche de leur personnel informatique.
Bart Silverstrim
3

Il existe une manière scriptée de le faire complètement via la ligne de commande; vous pouvez utiliser klist .

klist purge
Nixphoe
la source
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.Est- [Purge](https://technet.microsoft.com/en-us/library/hh134826.aspx?f=255&MSPPError=-2147217396)ce que regrab les jetons cependant? ou jette-t-il simplement ceux qui existent, ne vous laissant rien? Si vous n'avez pas de jetons, la relance de l'explorateur (ou du processus qui nécessite un jeton) les récupère-t-elle automatiquement?
Brad
Il régénérera le jeton lorsque vous demanderez de nouvelles ressources. Je l'ai utilisé assez fréquemment lors de la tentative de mise à jour des groupes de sécurité pour les utilisateurs distants et les postes de travail lors de l'ajout d'appartenance à leurs objets AD.
Nixphoe
oh bien (et le souffle j'ai foiré la mise en forme dans ce commentaire .... vous avez l'idée)
Brad
-2
  • Ouvrez le Gestionnaire des tâches
  • Tuer Explorer.exe (chacun)
  • Cliquez sur Fichier> Nouvelle tâche (Exécuter ...)
  • Tapez CMD
  • Dans l'invite de commandes, tapez "RunAs / user: \ explorer.exe

Terminé.

flip66
la source
2
Pas mauvais. Veuillez lire la question.
HopelessN00b
4
@ HopelessN00b Il semble que c'est essentiellement ce qui est devenu la réponse acceptée.
Brad
1
@Brad Qui n'a rien à voir avec le bien ou le mal. MDMarra a raison (comme Bart), cela (et la réponse acceptée) est faux. Ce processus ne force pas le système à mettre à jour les appartenances aux groupes.
HopelessN00b
1
@ HopelessN00b vous avez raison, comme je l'ai découvert plus tard dans la journée. Le redémarrage était le seul moyen de rafraîchir les adhésions. Malheureusement, les deux réponses sont fausses.
Brad
1
Déconnectez-vous et reconnectez-vous devrait faire l'affaire, pas besoin de redémarrer. Les adhésions aux groupes sont appliquées lors de la connexion.
Charlie Wilson