【问题标题】:Run application after shutting down windows关闭窗口后运行应用程序
【发布时间】:2012-08-29 01:32:33
【问题描述】:

昨天我在 Windows7 计算机上运行了 BIOS 更新。 BIOS 更新工具执行了 Windows 的关闭,并且没有重新启动计算机(因此直接在 Windows 关闭之后),一个类似 DOS 的工具启动了更新 BIOS。

我搜索了 WWW,但我只能找到如何在 Windows 关闭时(因此在 Windows 关闭之前)或注销时(注销脚本)执行应用程序。

有没有人知道如何做到这一点?

【问题讨论】:

  • 你确定它没有在windows启动前、关机后、然后关闭电脑之前运行应用程序吗?
  • 我在看屏幕,在工具启动之前没有看到系统重启。

标签: windows


【解决方案1】:

我猜这台机器实际上已经执行了软重启并且正在运行 BIOS 代码。这是通常的方法,在某些情况下,用户可能看不到软重启,即 BIOS 自我更新代码可能会在 POST 之前运行。

但是,它是(或至少曾经是)可以在关闭后运行 Windows 代码,但显然它的功能有限。关键信息可以在 Service Control Handler Function 上的 MSDN 库条目中找到:

此时间到期后,无论服务关闭是否完成,系统都会继续关闭。请注意,如果系统处于关闭状态(未重新启动或关闭),服务将继续运行。

因此,至少在原则上,您需要做的就是安装一个服务,该服务会要求关闭通知但在关闭时实际上并未停止,然后指示 Windows 在不重新启动或关闭电源的情况下关闭。我实际上已经看到了这种情况,但仅在旧版本的 Windows 上(在关机时自动关机成为默认设置之前!)所以我不能保证它仍然有效,尽管它确实做过一次。

但是,应该注意的是,这不一定会给您提供您可能想到的那种环境。例如,设备驱动程序在关机前不一定要卸载;毕竟,这有什么意义呢?

【讨论】:

  • 确实有可能该工具将固件上传到 BIOS 并设置了一个标志,因此 BIOS 将启动更新程序而不是 POST。我问这个问题是因为我们有带有我们自己的控制器的板。如果我们更新固件,控制器会进行硬重置,而 Windows 在运行时确实不喜欢这种情况。有时这会导致文件/注册表损坏。所以我们需要找到一种可以安全地“拔掉插头”的方法:)
  • 我描述的方法应该可以解决这个问题,前提是固件更新代码可以在 Windows 关闭的情况下正常运行;例如,您将(显然!)需要在启动系统关闭之前从磁盘加载所有数据。一种可能的替代方法是重新启动到 Windows PE 实例并从那里进行固件更新。
【解决方案2】:

您可以运行本地组策略 - gpedit.msc(从运行)。
计算机配置下选择Windows设置
选择脚本(启动/关机)
Shutdown 属性上,您可以添加脚本并在需要时提及参数。

我还建议你看看以下问题 - how to delay shutdown and run a process in window service

【讨论】:

  • 这会在 Windows 关闭之前运行脚本,因此在 Windows 卸载驱动程序和其他东西之前。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多