Как запланировать запуск задачи при закрытии окон

86

Как вы планируете запускать задачу в Windows XP при завершении работы Windows. Таким образом, я хочу запускать простую программу командной строки, которую я написал на C #, каждый раз, когда я закрываю окна. Похоже, что в запланированных задачах нет возможности выполнить эту задачу, когда мой компьютер выключается.

Crippeoblade
источник

Ответы:

92

Запустите gpedit.msc (локальные политики)

Конфигурация компьютера -> Настройки Windows -> Сценарии -> Завершение работы -> Свойства -> Добавить

Дэн Уильямс
источник
28
Если вы хотите, чтобы пакетный скрипт запускался при выходе из системы, я обнаружил, что прямая ссылка на файл .bat не работает. Однако, если бы я использовал C:\Windows\System32\cmd.exeкак имя сценария и /C C:\path\to\batch\script.batкак параметры сценария , так и было.
Дэн Стивенс
6
ПРЕДУПРЕЖДЕНИЕ. Сценарии запуска и завершения работы групповой политики не выполняются при использовании быстрой загрузки (по умолчанию включено в Windows 8 и выше). В этом случае только перезагрузка или принудительное завершение работы (из командной строки) действительно завершает работу компьютера. Во всех остальных случаях (завершение работы меню «Пуск») ядро ​​компьютера переводится в спящий режим и обновляется при загрузке, а сценарии запуска и завершения GPO игнорируются.
Voji
@voji: Верно ли это и для Windows Server?
sampathsris
как насчет перезапуска?
dangalg
похоже, они вообще не работают на Server Core 1909
Горди,
40

В дополнение к ответу Дэна Уильямса, если вы хотите добавить сценарий запуска / завершения работы , вам необходимо найти параметры Windows в разделе « Конфигурация компьютера» . Если вы хотите добавить сценарий входа / выхода , вам нужно искать настройки Windows в разделе « Конфигурация пользователя». .

Итак, чтобы повторить то, что сказал Дэн с этой информацией,

Для запуска / выключения:

  1. Запустите gpedit.msc (Локальные политики)
  2. Конфигурация компьютера -> Параметры Windows -> Сценарии -> Запуск или выключение -> Свойства -> Добавить

Для входа / выхода:

  1. Запустите gpedit.msc (Локальные политики)
  2. Конфигурация пользователя -> Параметры Windows -> Сценарии -> Вход или выход -> Свойства -> Добавить

Источник: http://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx

Бретт Пеннингс
источник
2
Это лучший ответ. Когда вы открываете GPEditor, он показывает два узла, как вы описываете. Поскольку оба узла имеют параметр «Настройки Windows», принятый ответ менее ясен, чем ваш ответ. Спасибо за чаевые. Очень полезно.
Сет Спирман,
34

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

  • Из планировщика заданий:

    Начать задачу: В журнале событий
    : Системный
    источник: USER32
    EventID: 1074

  • Из командной строки:

    schtasks / create / tn "имя задачи" / tr "файл задачи" / sc onevent / ec system / mo * [system / eventid = 1074]

Комментарий: параметр / ec доступен в Windows Vista и выше. (спасибо @ t2d)

Обратите внимание, что статус задачи может быть:

Запрошенная операция не была выполнена, поскольку пользователь не вошел в сеть. Указанная служба не существует. (0x800704DD)

Однако это не значит, что он не работал.

Оз Эдри
источник
Спасибо за чаевые! @Oz, Будет ли это работать при перезагрузке и выключении? Я пытаюсь
раскрыть тот
Да, это так, поскольку это событие регистрируется при перезапуске / завершении работы.
Оз Эдри
Обратите внимание, что аргумента /ec systemне существует, но он называется /ru system. см. support.microsoft.com/en-us/kb/814596#bookmark-4
t2d,
@ t2d, в то время как / ec существует в более новых версиях, / ru относится к совершенно другому. EC позволяет вам указать канал событий, а ru позволяет вам работать от имени другого пользователя. Тем не менее, спасибо за ваш комментарий. Я соответствующим образом отредактирую свой пост.
Оз Эдри
1
В вашем примере есть опечатка в модификаторе. Так должно быть ... /mo *[system/eventid=1074], а не.../mo *[system/evendid=1074]
testworks
4

Одним из обходных путей может быть создание простого командного файла для запуска программы с последующим выключением компьютера.

Вы можете завершить работу из командной строки, поэтому ваш сценарий может быть довольно простым:

c:\directory\myProgram.exe
C:\WINDOWS\system32\shutdown.exe -s -f -t 0
Нил Нейман
источник
4

Если вы запустите GPEdit.MSC, вы можете перейти в Конфигурация компьютера -> Параметры Windows -> Сценарии и добавить сценарии запуска / завершения работы. Это могут быть простые командные файлы или даже полнофункциональные EXE. Также вы можете настроить пользовательские конфигурации для сценариев входа и выхода из этого же инструмента. Этот инструмент недоступен в WIndows XP Home.

Кибби
источник
4

Редактор групповой политики не упоминается в сообщении выше. Я несколько раз использовал GPedit для выполнения задачи при загрузке или завершении работы. Вот инструкции Microsoft о том, как получить доступ и управлять GPedit.

Как использовать редактор групповой политики для управления политикой локального компьютера в Windows XP

Майкл Руньон
источник
1

Что я могу предложить сделать, так это создать ярлык для файла .bat (например, на рабочем столе) и, когда вы хотите выключить компьютер (и запустить файл .bat), щелкните созданный вами ярлык. После этого отредактируйте файл .bat и добавьте эту строку кода в конец или там, где это необходимо:

c:\windows\system32\shutdown -s -f -t 00

Что это значит

  1. Запускает процесс выключения
  2. Отображает предупреждение
  3. Заставляет все запущенные процессы останавливаться
  4. Выполняется немедленно
Мэтью Смит
источник
1

В Windows 10 Pro командный файл можно зарегистрировать; обходной путь регистрации cmd.exe и указания файла bat в качестве параметра не требуется. Я просто сделал это, зарегистрировав как сценарий выключения, так и сценарий запуска (загрузки), и это сработало.

Wo'O Ideafarm
источник
0

Мне также пришлось включить «Указать максимальное время ожидания для сценариев групповой политики» и «Отображать инструкции в сценариях завершения работы по мере их выполнения», чтобы это работало для меня, как я объясняю здесь .

Роальд
источник