您如何在Windows 7中强制更新用户的组成员身份?


27

我正在编写一个使用.NET Windows身份验证并依赖用户的组成员身份将其授权到网站各个区域的Web应用程序。现在,我在不属于域的开发计算机上,并且不使用AD,而是使用本地用户组。总的来说,这可以正常工作。

但是,在测试应用程序时,需要在用户帐户中添加和删除角色,以验证一切是否正常。当我添加角色时,它似乎不会传播,直到我退出Windows并再次登录。

是否可以在不注销的情况下强制更新组成员身份?


3
您是说注销该站还是该网站?

好点,我更新了问题以澄清问题。我必须注销Windows用户帐户(从Windows中注销)并再次登录。
kingdango 2011年

它确实将系统更新强制为组成员身份。再次运行命令任务kill kill Explorer之后,然后正常运行explorer。这样,您在新的资源管理器实例中也将拥有新的安全令牌。

Answers:


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

这将杀死浏览器,然后使用您的用户帐户重新打开...。它将提示您输入密码,这将为您提供一个新的令牌,从而更新您的成员身份。


1
这似乎确实可行,但是我发现所有映射的驱动器连接都断开了。
SomeGuy

2
在Windows 10 Pro中对我不起作用
Dave Cousineau

另请参阅:woshub.com/…。对于计算机klist -lh 0 -li 0x3e7 purge,对于用户klist purge。注意:我自己还没有尝试过这些命令。只是重复链接文章中的信息。
JohnLBevan '18年

10

在整个系统范围内很难做到这一点,但是对于单个可执行文件,可以通过终止进程并在用户的凭据下重新启动它们来实现。

当您登录时,您会收到一个反映您的组成员身份的令牌。刷新此令牌的唯一方法是登录。


如果真是这样,那就太麻烦了,这会妨碍我的测试。感谢您的见解...我希望其他用户能提供更好的答案,但是我猜您的15k +代表知道您在说什么。
kingdango 2011年

2
@kingdango,您可以始终runas以不同于您自己的用户身份运行该进程,并操纵该测试用户的组成员身份。每次关闭并重新启动使用该过程的过程时runas,都应创建一个新会话,该会话反映更改后的组成员身份。我还没有测试过,但是理论上它应该以这种方式工作。
MDMarra 2011年

由于我的开发环境,这很难,但是值得探索。感谢Mark的快速周到的答复。
kingdango 2011年

4

我遇到过类似的情况,即某个网站依赖于AD中的用户成员身份才能允许登录该网站。要考虑做的一件事是让Web服务器使用其提供的凭据对AD服务器进行身份验证/查询。如果Web服务器具有访问AD的权限,并且只是向服务器查询用户是否在XYZ组中,则他们将从AD而不是从需要登录/注销以获取新的用户登录令牌的列表中获取权限具有适当特权的令牌。

我现在从描述中知道您的dev机器没有该访问权限,但是听起来您的意思是在部署它时需要此功能。

如果您依赖令牌,则必须注销然后重新登录。


感谢您的周到答复。这是解决问题的一种好方法。在正常情况下,我很乐意等到用户收到更新的访问控制,即使这意味着他们需要注销并再次登录其计算机。这只是测试场景,这可能是一个负担,但实际上并没有什么大不了的。老实说,我花了更多时间研究捷径。:-)
kingdango 2011年

1
根据情况,它也可以派上用场。如果服务器直接查询DC,则意味着更改几乎立即“迁移”,因此,如果有人切断或添加了访问权限,则不会进行客户端登录/注销。对于他们的IT员工而言,这使其变得更加容易。
巴特·西尔弗斯

3

有一种脚本化的方式可以完全通过命令行来完成此操作。您可以使用klist

klist purge

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.是否[Purge](https://technet.microsoft.com/en-us/library/hh134826.aspx?f=255&MSPPError=-2147217396)重新标记令牌?还是只是丢弃现有的东西而已,却一无所有?如果您没有令牌,那么重新启动资源管理器(或任何需要令牌的进程)会自动对其重新启动吗?
布拉德,

当您请求新资源时,它将重新生成令牌。在将组成员身份添加到其AD对象时,尝试为远程用户和工作站更新安全组时,我经常使用此方法。
Nixphoe 2015年

哦,太好了(爆炸,我弄乱了该评论的格式。...您明白了)
Brad

-2
  • 打开任务管理器
  • 杀死Explorer.exe(每个)
  • 单击文件>新建任务(运行...)
  • 输入CMD
  • 在命令提示符下,键入“ RunAs /user:\explorer.exe

做完了


2
没有错。请阅读问题。
HopelessN00b 2012年

4
@ HopelessN00b这肯定看起来基本上就是被接受的答案。
布拉德(Brad)

1
@Brad与对与错无关。MDMarra的权利(与Bart一样),这(以及公认的答案)是错误的。此过程不会强制系统更新组成员身份。
HopelessN00b

1
@ HopelessN00b,您是对的,正如我当天晚些时候发现的那样。重新启动是刷新成员资格的唯一方法。不幸的是,两个答案都是错误的。
布拉德(Brad)

1
注销并重新登录即可解决问题,无需重新启动。组成员资格在登录时应用。
查理·威尔逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.