检测是否已发出 Windows 关闭命令

use*_*267 7 windows shutdown windows-7 windows-explorer windows-xp

是否可以检测是否已发出关闭命令(通过用户的开始菜单,或计算机上运行的任何其他程序或远程访问计算机),然后取消它?
或者,是否可以调整注册表以强制 Windows 在发出关闭命令时显示关闭计时器,以便我们可以禁用它?

Kel*_*ari 5

是和(大部分)不是。

您可以检测关闭事件。当 Windows 即将关闭时,它会向WM_QueryEndSession所有打开的应用程序发送一个。要检测到这一点,您必须在后台运行一个脚本或程序来检测和处理该事件。但是,似乎没有任何方法可以取消关闭,除非关闭是从本地机器用户启动的。

脚本/应用程序甚至可以捕获关闭并询问您是否要退出脚本/应用程序,然后您可以取消。这将阻止机器关闭,但不会阻止其他应用程序和可能的服务被终止。

您甚至不需要为此编写脚本,您只需打开记事本并输入一些文本即可。由于您在记事本中有未保存的数据,Windows 将等待并询问您是否要继续关机,让您有机会取消。同样,这仅在在本地启动关闭时才有效。

有一个 WMIWin32_ComputerShutdownEvent事件,它在计算机通过远程命令关闭时发生。但是,它只能接收此事件。当接收到事件时,本地计算机将在传递事件时终止脚本。