2012-09-04 54 views
3

昨天我在Windows7计算机上运行了BIOS更新。 BIOS更新工具执行了Windows的关闭操作,并且在不重新启动计算机的情况下(在Windows关闭之后直接进行),一个类似DOS的工具开始更新BIOS。关闭窗口后运行应用程序

我搜索了WWW,但我可以找到的是如何在Windows关机(在Windows关闭之前)或注销(注销脚本)时执行应用程序。

有没有人有任何线索如何实现这一目标?

+0

您确定它没有在Windows启动前,关机后运行应用程序,然后关闭PC? – podiluska

+0

我正在寻找屏幕,并且在该工具启动之前没有看到系统重新启动。 –

回答

1

这是我的猜测是,该机其实已经进行了软重启并运行BIOS代码。这是通常的方法,并且在某些情况下,软重启可能对用户不可见,即,BIOS自更新代码可能在POST之前运行。

但是,它是(或至少以前曾经可以)在关闭后运行Windows代码,尽管显然它的功能有限。关键信息可以在Service Control Handler Function MSDN库条目中发现:这段时间到期

后,系统关机不管服务关闭是否完整进行。请注意,如果系统处于关闭状态(未重新启动或关闭),服务将继续运行。

所以,至少在原则上,所有你需要做的是安装一个要求关闭通知,但是当关机时实际上并没有停止,然后指示Windows关机无需重新启动或关机的服务。我已经看到了这种情况,但只有在老版本的Windows上(在关机时自动关闭电源成为默认电源之前),所以我不能保证它仍然有效,尽管它确实只有一次。

然而,应该指出的是,这不一定会给你你可能想到的那种环境。例如,设备驱动程序不一定在关机前卸载;毕竟,重要的是什么?

+0

确实有可能该工具将固件上传到BIOS,然后设置了一个标志,所以BIOS将启动更新程序而不是POST。我问这个问题是因为我们有我们自己的控制器的董事会。如果我们更新我们的固件,控制器会执行硬重置,而Windows在运行时确实不喜欢。有时候,这最终会导致损坏的文件/注册表。因此,我们需要找到一种可以安全地将插头拔出的方法:) –

+0

我所描述的方法应该可以解决这个问题,前提是固件更新代码可以在Windows关闭的情况下正常运行;例如,你会(显然!)需要在开始系统关闭之前从磁盘加载所有数据。一种可能的替代方法是重新启动到Windows PE的一个实例并从那里进行固件更新。 –

1

您可以运行本地组策略 - gpedit.msc(从运行)。
计算机配置选择Windows设置
选择脚本(启动/关机)
关机属性你可以添加脚本,如果需要的话也不在话下参数。

enter image description here

我也劝你看看下面的问题 - how to delay shutdown and run a process in window service

+0

这将在Windows关闭之前运行脚本,因此在Windows卸载驱动程序和内容之前。 –

相关问题