gpt4 book ai didi

windows - 检测计划关机

转载 作者:可可西里 更新时间:2023-11-01 12:57:12 25 4
gpt4 key购买 nike

我有一个 cmd 脚本将执行一组补丁,它被设计为在需要重新启动时中止以避免补丁问题。我还想扩展脚本以在计划重新启动时中止(例如,通过“关闭”命令)以避免在可能的情况下在补丁中重新启动。不幸的是,除了尝试安排另一次关机外,我还没有找到检测此问题的方法,这会导致:

A system shutdown has already been scheduled.(1190)

虽然理论上我可以使用它,但我不认为每次我需要检查计划的重启时吓唬登录用户是个好习惯。我真正需要的是一种查询由“关机”命令修改的状态的方法。

这可能吗?我会对任何不涉及我在系统上永久运行应用程序以捕获关闭事件的解决方案感到满意(我认为在实际触发关闭之前甚至不会发送)

最佳答案

我也遇到了同样的问题,我到处搜索,但没有找到任何有用的东西。

最终,我开始胡思乱想各种我能想到的事情。我可以想到两种解决方法来解决我们的问题。

事件查看器可以告诉您已安排关机,但不会告诉您关机时间。

一个想法是在事件查看器中查询最近的系统关闭、最近的计划关闭以及最近取消的计划关闭。如果计划的关闭比最近的取消或关闭更近,那么有一个正在进行中。事件 ID 是:1074 表示已开始的计划关机,1075 表示已取消计划关机,在 Windows 日志/系统下12 用于系统启动13 系统关闭(都在 Windows 日志/系统下)

我懒得在批处理文件中执行此操作,但我知道这是可能的。

所以这就是我最终做的:与其安排关机,不如尝试中止它。如果没有正在进行的关机,它将引发错误(无法中止系统关机,因为没有进行关机。(1116))。我认为比通过安排关机来吓坏用户要好得多。

这是我为一个简单的自动关机脚本编写的代码副本,它在取消和开始计划关机之间切换。

@echo off
shutdown /a
if errorlevel 1 call:shutdown
goto end

:shutdown
set /p choice=Shutdown in how many minutes?
set /a mod=60
set /a mod*=%choice%
shutdown /s /t %mod%

:end

编辑 - 我正在重新访问这个答案,因为我有更多信息要添加。

上述解决方案将检测是否已使用/t 参数通过 shutdown.exe 命令安排关机。

如果您需要确定 Windows 是否已安排关机(因为它会在某些 Windows 更新后自动执行),则可以查询已设置的注册表项。下面是在 PowerShell 中,但您可以编写一个批处理文件来执行相同的操作。

Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'

注意:如果使用 shutdown.exe 计划重新启动,这将不会返回 true,只有当 Windows 提示您的计算机需要重新启动时,它才会返回 true。

关于windows - 检测计划关机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com