如何在Windows 10家庭版关机时运行批处理脚本?

如何在Windows 10家庭版关机时运行批处理脚本?

我需要在关闭 Windows 10 家庭版时运行批处理脚本,无论是手动重启还是由于 Windows 自动更新而自动重启。这也需要在没有用户登录的情况下工作。到目前为止,我已经尝试过:

  1. 事件 ID 为 1047 的计划任务(已丢弃,不会等到我的脚本结束)。
  2. 手动将组策略关闭脚本添加到注册表和 C:\WINDOWS\SYSTEM32\GroupPolicy(已丢弃,不会运行,因为看起来该功能已被 Windows 版本的限制所禁用。)
  3. 第三方软件。奇怪的是,我找不到任何可以作为服务运行并允许我添加在系统(或服务)关闭时运行的 .bat 文件免费工具。
  4. 我尝试使用 AutoHotkey + NSSM [The Non-Sucking Service Manager] 作为自定义服务,但 AutoHotkey 的事件并非每次都会触发。

我对这个限制很不满。

答案1

我以前用 AutoHotkey 做过这个。这个脚本已经过测试,可以正常工作。

我制作了一个基本的批处理文件,它将在桌面上创建一个“测试文件”。只需运行 AHK 文件并保持其运行即可。当脚本检测到关机时,它将运行该批处理文件。

确保在脚本顶部设置文本文件的路径。

AutoHotkey 脚本:

;==============================
;Set the path to your batch file.
path    := "C:\batch.bat"
;==============================

; Run script as admin. This will allow your batch file to be ran with admin priv.
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"  ; Requires v1.0.92.01+
   ExitApp
}

; Only allow one instance of the script to run.
#SingleInstance, Force

; If you don't want an icon to show in the tray,
; remove the semicolon from the line below.
;#NoTrayIcon

; When script detects WM_QUERYENDSESSION (a shutdown), run OnShutDown function.
OnMessage(0x11, "OnShutDown")
return

OnShutDown(){
    ; Run the batch file.
    Run, % path
    ExitApp
}

我用于测试的批处理文件:

echo Write file before shutdown > %USERPROFILE%\Desktop\ShutdownTest.txt

如果您愿意,您可以随时直接通过 AHK 执行批处理文件命令。

答案2

经过几个月我终于找到了解决方案!

  • 打开组策略管理控制台
  • 然后转到User Configuration\Policies\Windows Settings\Scripts (Logoff)
  • 现在添加您的应用程序或脚本。

通常情况下,对于我来说,这一点是行不通的。

  • 解决方法是转到User Configuration\Policies\Administrative Templates\System\Scripts

  • 并启用Display instructions in shutdown scripts as they run

运行GPUPDATE /FORCE并享受吧!要关机,请按照相同的步骤操作,但要按照Computer Configuration

组策略

答案3

更新:如果这是在下一个用户登录之前需要完成的事情,那么将其放入机器启动脚本中可能会满足您的需求。如果这是在关机之前必须完成的事情,那么关机脚本就是您的答案。

如果家庭版不允许您修改本地策略以使这些脚本工作,那么这是家庭版的限制,您可能需要升级。但是,科技网没有将如何设置关机脚本的解释缩小到 Windows# 之外。

另外,机器关机脚本将以计算机的权限运行。用户注销脚本将以登录用户的权限运行。

使用批处理脚本关机?只需在关机脚本末尾使用关机命令(“shutdown -t 0”)。在桌面上放置脚本的快捷方式,使用电源按钮图标。(删除了基于单个用户通过脚本关机而不是开始菜单关机选项的答案)。

相关内容