Как запустить пакетный сценарий при завершении работы в Windows 10 home edition?

Мне нужно запустить пакетные сценарии при завершении работы Windows 10 home edition, как при ручном перезапуске, так и при автоматическом перезапуске из-за автоматического обновления Windows. Это должно работать, пока пользователи не вошли в систему.
До сих пор я пробовал:

  1. запланированная задача на eventid 1047 (отброшена, не будет ждать, пока мой скрипт закончится).
  2. ручное добавление сценариев завершения работы групповой политики в реестр и C:WINDOWSSYSTEM32GroupPolicy (сброшенный, не побежит в виду того что он смотрит как функциональность отключена по ограничения на выпуск Windows.)
  3. программное обеспечение третьей стороны. Как ни странно, я не мог найти бесплатный инструмент, который бы запускался как сервис и позволял мне добавлять.bat-файлы для запуска при завершении работы системы (или службы).
  4. я попробовал AutoHotkey + NSSM [менеджер не сосать службы] в качестве пользовательской службы, но события AutoHotkey не будет срабатывать каждый раз.

Я совершенно разочарован этим ограничением.

18
задан Hennes
16.03.2023 10:14 Количество просмотров материала 2924
Распечатать страницу

2 ответа

Я делал это с 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
отвечен GroggyOtter 2023-03-17 18:02

Update: если это то, что должно быть сделано до следующего входа пользователя в систему, включение его в сценарий запуска машины может удовлетворить ваши потребности. Если это то, что должно быть сделано до выключения питания, сценарий выключения-ваш ответ.

Если Home edition не позволяет изменять локальную политику для работы этих сценариев, то это ограничение home edition и может потребоваться обновление. Однако,TechNet не сужает их объяснение как установить скрипт отключения за Windows #.

кроме того, сценарий завершения работы компьютера будет выполняться с разрешениями компьютера. Сценарий выхода пользователя будет выполняться с разрешениями вошедшего в систему пользователя.

использовать пакетный скрипт для завершения работы? Просто используйте команду shutdown ("shutdown-t 0") в конце вашего сценария shutdown. Поместите ярлык скрипта на рабочий стол, используйте значок кнопки питания. (удален ответ на основе однопользовательского выключения сценарий вместо опции выключения меню Пуск).

0
отвечен Xalorous 2023-03-17 20:19

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

automation
batch-file
script
shutdown
windows-10
Вверх