【问题标题】:How do I prevent Windows from performing installations until a reboot occurs?如何防止 Windows 在重新启动之前执行安装?
【发布时间】:2018-04-06 14:11:48
【问题描述】:

我正在测试安装脚本,并且必须将 Windows 置于另一个安装等待重新启动的状态。我已阅读如何测试是否需要重新启动。设置需求的正确方法尚不清楚。

【问题讨论】:

  • 当 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 键不为空时,安装程​​序往往会变得脾气暴躁。

标签: windows windows-installer reboot


【解决方案1】:

诚实的回答:我不确定。有许多不同的注册表位置表明需要重新启动。我只是想在这里制作一个临时列表:How do I reference the Reboot Pending Property in Burn (WiX)。我不确定是什么机制使用了它们,但可以想象,其中一些重启条目可能会导致进一步的安装被阻止。

如您所知,某些 Windows 更新 会设法安排重启提示,这些提示不会停止或消失,并且不允许安装更多软件(至少不是 Windows 安装程序)。我不熟悉用于触发此事件的 API - 很可能它们是 Microsoft 自己的函数,只能由 TrustedInstaller 调用(Windows 模块安装程序服务 - 用于安装 Windows 更新 - 能够替换文件@ 987654322@)。 只是一个理论。明天有时间我再看看。

组策略 to disable Windows Installer by policy 中有一些功能,但如果我是你,我不会走这条路。组策略很重要,它不会阻止非 MSI 安装(据我所知)。我相信你已经找到了这个选项。

看看这个脚本:Get-PendingReboot-Query,SCCM 部分似乎表明了所谓的“硬重启”($CCMClientSDK.IsHardRebootPending)。也许某些东西表明重新启动,在重新启动完成之前不允许做任何其他事情? 如果您有可用的 SCCM,这是我会调查的选项。 很遗憾,我无法及时了解这个问题。也许在serverfault.com 甚至superuser.com 上试试你的运气,那里有系统管理员和高级用户潜伏?

【讨论】:

  • 我正在做 SCCM 工作,其中 SCCM 调用 VBScript 并从中返回状态。 VBScript 必须检查很多事情以返回是否正在等待重新启动并返回相应的代码、返回重新启动代码并实际执行重新启动、返回成功或返回失败。不仅有一个 VBScript,而且还安装了另一个安装,它是依赖的并且也使用 VBScript,这将用于大量机器。我正在尝试优化测试以获得最佳效率和模拟问题。
【解决方案2】:

我不建议您自动重新启动。您最好通知用户,在进行安装之前,需要重新启动。

如果您想确保在重新启动(任何重新启动)后,安装程序将运行,您可以利用 Run 和 RunOnce 注册表项: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx

基本上,如果您检测到正在等待重新启动,则在后面创建这些注册表并通知用户他应该首先重新启动机器。

重新启动后,如果您创建注册表,Windows 将自动加载安装。

【讨论】:

  • 也许主题行具有误导性,但发布者知道如何在安装完成时检测重新启动。这是张贴者想要设置此条件以确保 MSI 检测到它的测试情况。
  • 我阅读了几篇关于 PendingRenameOperation 的文章。有人说如果存在,这是无效的。可以有删除和重命名(移动)。只有重命名才重要。知道这一点的唯一方法是解析值并检查待处理的操作是什么。例如,在我的工作站上,安全软件在每次启动后将删除操作留在 PendingRenameOperations 中,并且始终存在于注册表中。但我从来没有安装软件的问题。一些更好的代码 sn-ps 解析信息看它是什么。
【解决方案3】:

您可以在注册表中添加一个条目,根据它您可以检查是否重新启动。或者执行重启。

虽然我会建议您避免重新启动,如果可以的话。 Windows 安装程序会自动检测是否需要重新启动,并将指示相同。虽然你可以压制它。

有一个 PendingRenameOperations 注册表,在升级过程中需要重新启动以进行文件更新时设置。在我们的产品中,我们检查此注册表项以及其他一些与产品相关的注册表项 - 然后向用户显示是否需要重新启动的消息。如果用户接受重新引导,则终止安装/升级。

同样的好文章:https://technet.microsoft.com/en-us/library/cc164360(v=exchg.80).aspx

【讨论】:

  • 也许主题行具有误导性,但发布者知道如何在安装完成时检测重新启动。这是张贴者想要设置此条件以确保 MSI 检测到它的测试情况。
  • 我阅读了几篇关于 PendingRenameOperation 的文章。有人说如果存在,这是无效的。可以有删除和重命名(移动)。只有重命名才重要。知道这一点的唯一方法是解析值并检查待处理的操作是什么。例如,在我的工作站上,安全软件在每次启动后将删除操作留在 PendingRenameOperations 中,并且始终存在于注册表中。但我从来没有安装软件的问题。一些更好的代码 sn-ps 解析信息看它是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2023-02-05
  • 2018-10-03
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2012-10-05
相关资源
最近更新 更多