在重新启动之前,如何阻止Windows执行安装?

时间:2018-04-06 14:11:48

标签: windows windows-installer reboot

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

3 个答案:

答案 0 :(得分:1)

我不建议您自动重启。您应该更好地告知用户,在进行安装之前,需要重新启动。

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

基本上,如果您检测到重启处于挂起状态,那么请在后面创建这些注册表,并告知用户他应该首先重新启动计算机。

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

答案 1 :(得分:1)

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

如您所知,某些 Windows更新能够安排不会停止或消失的重启提示,并且不允许安装其他软件(至少不安装Windows安装程序)。我不熟悉用于触发此操作的API - 很可能它们是Microsoft自己的功能,只能由 TrustedInstaller 调用(Windows模块安装程序服务 - 用于安装Windows更新 - 能够替换文件{ {3}})。 只是理论。如果我明天有空的话,我会再看看。

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

查看此脚本:to disable Windows Installer by policy,SCCM部分似乎表示所谓的“硬重启”($CCMClientSDK.IsHardRebootPending)。也许某些东西表明重启不会允许在重启之前完成其他任何事情? 如果您有SCCM可用,这是我要调查的选项。不幸的是我不能快速解决这个问题。也许在系统管理员和超级用户潜伏的Get-PendingReboot-Query甚至serverfault.com上试试运气?

答案 2 :(得分:0)

您可以在注册表中添加一个条目,您可以根据该条目检查重新引导。或者执行重启。

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

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

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