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

如何防止Windows在重新启动之前执行安装?,windows,windows-installer,reboot,Windows,Windows Installer,Reboot,我正在测试安装脚本,必须将Windows置于另一个安装的重新启动挂起状态。我已经阅读了如何测试是否需要重新启动。设置需要的正确方法尚不清楚。我不建议您自动重新启动。您最好通知用户,在继续安装之前,需要重新启动 如果要确保重新启动(任何重新启动)后安装程序将运行,可以利用Run和RunOnce注册表项: 基本上,如果您检测到重新启动挂起,则在后面创建这些注册表,并通知用户应首先重新启动计算机 重新启动后,如果您创建注册表,Windows将自动加载安装。您可以在注册表中添加一个条目,然后根据该条目

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

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

如果要确保重新启动(任何重新启动)后安装程序将运行,可以利用Run和RunOnce注册表项:

基本上,如果您检测到重新启动挂起,则在后面创建这些注册表,并通知用户应首先重新启动计算机


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

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

尽管我建议您避免重新启动,如果可以的话。Windows installer会自动检测是否需要重新启动,并指示是否需要重新启动。尽管你可以抑制它

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

同样的好文章:

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

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

集团政策中有一些功能,但如果我是你,我不会走这条路。组策略是很重的东西,它不会阻止非MSI安装(据我所知)。我相信你已经找到了这个选择


查看此脚本:,SCCM部分似乎指出了所谓的“硬重启””(
$CCMClientSDK.IsHardRebootPending
)。可能是指在重新启动之前不允许执行任何其他操作的重新启动如果您有可用的SCCM,这是我将调查的选项。不幸的是,我在这个问题上没有跟上进度。也许可以在系统管理员和高级用户潜伏的地方碰碰运气?

当HKLM\system\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations密钥不为空时,安装人员往往会发脾气。也许主题行有误导性,但海报知道如何在安装完成时检测重新启动。这是一个测试场景,海报希望设置此条件以确保MSI检测到它。我读了几篇关于PendingRenameOperation的文章。有人说如果存在,这是无效的。可以进行删除和重命名(移动)。只有重命名才算数。了解这一点的唯一方法是解析值并检查挂起的操作是什么。例如,在我的工作站上,安全软件在每次启动后将删除操作保留在PendingRenameOperations中,并且这始终存在于注册表中。但我在安装软件时从来没有遇到过问题。一些更好的代码片段解析信息以了解它是什么。也许主题行有误导性,但海报知道如何在安装完成时检测重新启动。这是一个测试场景,海报希望设置此条件以确保MSI检测到它。我读了几篇关于PendingRenameOperation的文章。有人说如果存在,这是无效的。可以进行删除和重命名(移动)。只有重命名才算数。了解这一点的唯一方法是解析值并检查挂起的操作是什么。例如,在我的工作站上,安全软件在每次启动后将删除操作保留在PendingRenameOperations中,并且这始终存在于注册表中。但我在安装软件时从来没有遇到过问题。一些更好的代码片段解析信息以查看它是什么。我正在做SCCM工作,SCCM调用VBScript并从中返回状态。VBScript必须检查很多事情才能返回是否挂起重新启动,并返回相应的代码,返回重新启动代码并实际执行重新启动,返回成功或返回失败。不仅有一个VBScript,还有另一个安装,它是依赖的,并且也使用VBScript,这将应用到大量的机器上。我试图优化测试以获得最佳效率和模拟问题。