所以我一直在阅读这份文件”组策略处理和优先级“。我知道策略是按照本地、站点、域、组织单位、子组织单位的顺序应用的。文章没有明确说明软件安装、脚本和新组策略等应用到计算机的顺序优先。
我正在尝试编写一个脚本来调整计算机上的某些似乎无法通过偏好设置实现的功能,但我需要确定软件安装已完成,并且已首先应用了一些偏好设置。
更新:
以下是一些背景信息。我有一个组策略,其中有一个用于小部件 A 的软件安装(计算机配置\策略\软件设置\已分配的应用程序)。小部件 A 到处放置令人讨厌的快捷方式,因此我尝试使用首选项功能(计算机配置\首选项\Windows 设置\快捷方式)删除不需要的快捷方式。该程序有一个小错误,我必须修复它,但发布者没有提供更新的 msi,只有一个将应用更新的 exe。所以我必须使用启动脚本来运行应该修补该程序的 EXE。
似乎在软件安装之前应用了“计算机配置\首选项”,因为我的文件删除似乎要经过几次重启后才能生效。似乎这个软件包的某些部分需要重启,因为本来应该修补它的启动脚本在我重启之前出错了。
我在 Google 上搜索时,没有找到具体说明顺序的文档。我还想知道各种可用首选项之间的顺序是什么。例如,我可以通过首选项设置环境变量。我可以在文件、文件夹或快捷方式首选项中使用这些变量吗?
我希望某处有一份文档可以详细描述该过程。
答案1
软件安装策略在启动脚本执行之前进行处理。有时这正是您想要的,有时却不是。您无法更改它。
当我想在软件安装之前运行启动脚本时,我最终使用组成员身份来控制启动脚本的执行,并使用命令将计算机添加到控制软件安装的第二个组中来结束启动脚本。唯一的问题是,到目前为止,我还没有找到任何可靠的方法来从启动脚本重新启动 Windows XP 或更新的操作系统。(是的,是的——我也尝试了各种方法。如果您愿意,我可以详细讨论它们。)因此,这总是使该策略需要两次启动才能“生效”。
您提到了“首选项”,所以我认为您正在考虑通过登录脚本对用户环境进行操作。登录脚本显然是在登录后执行的。如果您想检查在登录脚本期间是否安装了某个软件,请在注册表中查询 Windows Installer“数据库”,查看该程序是否存在并“退出”。您会在“HKEY_CLASSES_ROOT\Installer\Products”键中找到已安装的产品。显然,您必须找出您正在处理的包的 GUID。
编辑:根据我从文档中收集到的信息,组策略客户端扩展 (CSE) 的处理顺序是根据客户端扩展的 GUID 值执行的。看起来 GUID 数值较高的 CSE 执行得更晚。我手边没有“首选项”CSE 的 GUID,所以我无法告诉您它在其他 CSE 之前/之后运行时应该如何操作。
至少在 Windows XP 上,深入研究 HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\GPExtensions 并查找“Prefernces”的 CSE。REGEDIT 也会按数字对这些 GUID 进行排序,因此您可以直观地判断“Preferences”CSE 是在其他 CSE 之前还是之后执行。
答案2
运行的脚本有两种。启动脚本在设置计算机首选项(GPO 的计算机设置部分中的内容)后运行。登录脚本在用户登录并应用用户设置后运行。脚本按照它们在 GPO 中列出的顺序同步运行(因此一个脚本必须先完成,下一个脚本才能启动)。请注意,默认情况下,Windows XP 实际上会让您先登录,然后再处理网络设置,这意味着您可以在处理 GPO 之前登录。可以使用位于计算机配置\管理模板\系统\登录\始终在计算机启动和登录时等待网络的 GPO 设置来绕过此行为。因此,启动脚本将在计算机首选项之后但在用户首选项之前运行,并且登录脚本将在所有首选项设置之后发生。希望对您有所帮助。
答案3
顺序由管理员设置,链接顺序最低的设置最后处理(因此具有最高优先级)。如果您需要确保在启动时应用策略,请使用设置计算机配置\管理模板\系统\登录\始终在计算机启动和登录时等待网络。还设置在启动期间同步应用计算机组策略。这会强制系统等待,直到它可以检索和处理计算机策略,然后才允许用户登录。如果您需要检查组策略是否成功运行,请检查列出的日志文件这里