组策略在客户机上不应用的解决方法

来源:互联网 发布:java语言编程 编辑:程序博客网 时间:2024/06/05 12:03

组策略不apply到客户端上很久以前就遇到了,当时是研究 Event log 中的 UserEnv 1054 错误。MS的KB当时的解释是开机启动时网卡自动协商会有很多的闪断,造成组策略下载和处理的中断,解决方法是改注册表关闭NLA 网络地址感知。 当时就试验不行,因为不急,所以也就放下了. 前些天处理一个关于证书的问题,因为是通过组策略发布的,组策略不应用,应用程序就无法使用证书,仔细研究了一下,找到了解决方法。

1。将以下注册表键值做成一个注册表文件,加入注册表。作用是延长OS处理组策略的时间到90秒,cover了自动协商的时间,所以解决了问题。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon]
"GpNetworkStartTimeoutPolicyValue"=dword:0000003c

[HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/System]
"GpNetworkStartTimeoutPolicyValue"=dword:0000003c

2。重启1-2次,RsOP.msc 查看组策略的应用情况。一般都能解决,有时安全策略还是不能apply,方法是:

 a. 放任不管。 组策略会在后台刷新,缺省每90分钟一次,迟早会刷好。
 b. 重建安全策略文件:
  先删除或者改名 C:/windows/security/database/secedit.sdb
 再
  cd C:/windows/security/templates
  Secedit.exe  /configure /db secedit.sdb /cfg "setup security.inf"
  或者打开mmc snap-in 安全配置和分析 工具,用它创建新的安全配置文件。
  两者作用完全相同。注意:要在安全模式下运行。
  
偷懒的方法就是直接删除,重启。 OS会自动重建这个secedit.sdb的。重启后,再RsOP.msc 看,一切ok了。

 

管理员朋友可能会问如何发布,既然组策略已经不能用了,用组策略发布已经不可能了,那么就是登录脚本这个传统工具了, 在登录脚本中加入  CScript.exe  x.vbs   //B  

编辑 x.vbs 文件如下,前两行不要也可以,
Option Explicit
On Error Resume Next

Dim WSHShell
Set WSHShell = WScript.CreateObject("Wscript.Shell") 

WSHShell.RegWrite "HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/GpNetworkStartTimeoutPolicyValue", "90", "REG_DWORD"

WSHShell.RegWrite "HKLM/SOFTWARE/Policies/Microsoft/Windows/System/GpNetworkStartTimeoutPolicyValue", "90", "REG_DWORD"

很简单吧 ?   有时会无法直接从客户机直接调用网络共享上的 x.vbs 文件,那么在登录脚本中映射网络共享之后, 以上脚本之前,加入从网络共享copy 这个 x.vbs 到客户端本地的代码,例如:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FileExists("C:/Scripts/x.vbs") Then
          FSO.CopyFile "P:/share/x.vbs", "C:/Scripts/x.vbs", True
End If

对应的,脚本文件也应该改成: CScript.exe  C:/Scripts/x.vbs //B

原创粉丝点击