如何防止 Windows 在重新启动之前执行安装?
How do I prevent Windows from performing installations until a reboot occurs?
我正在测试安装脚本,并且必须将 Windows 置于等待从另一个安装重新启动的状态。我已经阅读了如何测试是否需要重启。设置需求的正确方法尚不清楚。
我不建议您继续自动重启。您最好告知用户,在进行安装之前,需要重新启动。
如果您想确保在重新启动后(任何重新启动),安装程序将是 运行,您可以利用 运行 和 运行Once 注册表项:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx
基本上,如果您检测到重启挂起,则在后面创建这些注册表并通知用户他应该先重启机器。
重新启动后,如果您创建注册表,Windows 将自动加载安装。
您可以在注册表中添加一个条目,您可以根据该条目检查是否重新启动。或执行重启。
尽管我建议您尽可能避免重启。 Windows 安装程序会自动检测是否需要重新启动并会显示相同的信息。虽然你可以压制它。
有一个 PendingRenameOperations 注册表,在升级期间需要重新启动以进行文件更新时设置该注册表。在我们的产品中,我们会检查此注册表项以及其他几个 product-related 注册表项 - 然后向用户显示一条消息,说明是否需要重新启动。如果用户接受重新启动,则 install/upgrade 终止。
同样的好文章:https://technet.microsoft.com/en-us/library/cc164360(v=exchg.80).aspx
诚实的回答:我不确定。有许多不同的注册表位置表明需要重新启动。我只是想在这里制作一个 ad-hoc 列表:How do I reference the Reboot Pending Property in Burn (WiX)。我不确定是什么机制使用它们,但可以想象其中一些重新启动条目可能会导致进一步安装被阻止。
如您所知,某些 Windows 更新 设法安排重启提示,这些提示不会停止或消失,也不允许安装更多软件(位于至少不是 Windows 安装人员)。我不熟悉用于触发此操作的 API - 很可能它们是 Microsoft 自己的函数,只能由 TrustedInstaller(Windows 模块安装程序服务 - 用于安装 Windows 更新- 能够替换文件 protected by Windows Resource Protection )。 只是一个理论。明天有时间再去看看
组策略to disable Windows Installer by policy中有一些功能,但如果我是你,我不会走那条路。组策略很繁重,它不会阻止 non-MSI 安装(据我所知)。我相信你已经找到了这个选项。
查看此脚本:Get-PendingReboot-Query, the SCCM section seems to indicate what is referred to as a "Hard Reboot" ($CCMClientSDK.IsHardRebootPending
). Maybe something which indicates a reboot that will not allow anything else to be done before the reboot is done? If you have SCCM available this is the option I would investigate. Unfortunately I am not up to speed on the issue. Maybe try your luck on serverfault.com or even superuser.com系统管理员和高级用户潜伏在哪里?
我正在测试安装脚本,并且必须将 Windows 置于等待从另一个安装重新启动的状态。我已经阅读了如何测试是否需要重启。设置需求的正确方法尚不清楚。
我不建议您继续自动重启。您最好告知用户,在进行安装之前,需要重新启动。
如果您想确保在重新启动后(任何重新启动),安装程序将是 运行,您可以利用 运行 和 运行Once 注册表项: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx
基本上,如果您检测到重启挂起,则在后面创建这些注册表并通知用户他应该先重启机器。
重新启动后,如果您创建注册表,Windows 将自动加载安装。
您可以在注册表中添加一个条目,您可以根据该条目检查是否重新启动。或执行重启。
尽管我建议您尽可能避免重启。 Windows 安装程序会自动检测是否需要重新启动并会显示相同的信息。虽然你可以压制它。
有一个 PendingRenameOperations 注册表,在升级期间需要重新启动以进行文件更新时设置该注册表。在我们的产品中,我们会检查此注册表项以及其他几个 product-related 注册表项 - 然后向用户显示一条消息,说明是否需要重新启动。如果用户接受重新启动,则 install/upgrade 终止。
同样的好文章:https://technet.microsoft.com/en-us/library/cc164360(v=exchg.80).aspx
诚实的回答:我不确定。有许多不同的注册表位置表明需要重新启动。我只是想在这里制作一个 ad-hoc 列表:How do I reference the Reboot Pending Property in Burn (WiX)。我不确定是什么机制使用它们,但可以想象其中一些重新启动条目可能会导致进一步安装被阻止。
如您所知,某些 Windows 更新 设法安排重启提示,这些提示不会停止或消失,也不允许安装更多软件(位于至少不是 Windows 安装人员)。我不熟悉用于触发此操作的 API - 很可能它们是 Microsoft 自己的函数,只能由 TrustedInstaller(Windows 模块安装程序服务 - 用于安装 Windows 更新- 能够替换文件 protected by Windows Resource Protection )。 只是一个理论。明天有时间再去看看
组策略to disable Windows Installer by policy中有一些功能,但如果我是你,我不会走那条路。组策略很繁重,它不会阻止 non-MSI 安装(据我所知)。我相信你已经找到了这个选项。
查看此脚本:Get-PendingReboot-Query, the SCCM section seems to indicate what is referred to as a "Hard Reboot" ($CCMClientSDK.IsHardRebootPending
). Maybe something which indicates a reboot that will not allow anything else to be done before the reboot is done? If you have SCCM available this is the option I would investigate. Unfortunately I am not up to speed on the issue. Maybe try your luck on serverfault.com or even superuser.com系统管理员和高级用户潜伏在哪里?