有没有办法在不重新启动的情况下刷新计算机组成员身份?

pku*_*eal 19 windows active-directory groups

我使用的是 Windows Server 2008 R2,并且在计算机 ComputerA 的“网络服务”帐户下运行了一个 Windows 服务。此 Windows 服务想要访问共享文件夹(在另一台计算机 ComputerB 上),该文件夹授予 GroupA 组读取权限。所以需要将ComputerA的电脑账号加入GroupA,重启ComputerA。

我的问题是:有没有办法让组成员资格在不重新启动 ComputerA 的情况下立即生效?

Gre*_*kew 28

For Windows 2008 and higher:

psexec -s -i -d cmd.exe

C:\Windows\system32>whoami
nt authority\system

-- List the session 0 tickets (0x3e7 is the machine session 0)
klist -lh 0 -li 0x3e7  

-- Purge the session 0 tickets  
klist -lh 0 -li 0x3e7 purge  

Should display:  

Current LogonId is 0:0x3e7  
        Deleting all tickets:  
        Ticket(s) purged!  
Run Code Online (Sandbox Code Playgroud)

PSExec 是 Microsoft 提供的免费 SysInternals 下载。


为了消除任何混淆,此过程绝对会刷新计算机的组成员身份,并允许将应用于安全组的组策略现在应用于计算机,而无需重新启动计算机。这已经在 Windows Server 2012 R2 和 Windows Server 2008 R2 以及通用安全组上进行了测试和验证。简短的版本是:

  • psexec -s -i -d cmd.exe
  • klist tgt (查看当前票证,记下大小。另外请注意,由于您以系统身份运行,因此当前登录 ID 为 0x3e7)
  • 将计算机添加到安全组。(留出时间进行复制,如果适用)
  • klist purge
  • nltest /dsgetdc:domain.com (运行此命令或任何其他将连接到网络资源并强制执行 TGT 请求的命令)
  • klist tgt (查看当前票,记下大小。应该稍微大一些。注意 whoami /groups 不会反映新成员资格)

此时,可能会退出系统命令提示符。

  • gpupdate /force
  • gpresult /h gpresult.html

查看 gpreport,它现在应该显示应用了组策略。