Вопрос: C # windows 7 запускает exe перед завершением работы компьютера


Я хочу запустить исполняемый файл, который сохраняет файл XML на локальном диске, прежде чем компьютер (работающий в Windows 7) отключится.

Я знаю, что можно запустить скрипты перед отключением. Это можно настроить в редакторе локальной групповой политики в разделе Конфигурация компьютера -> Настройки Windows -> Скрипты (запуск / завершение работы).

Я попытался поместить свой исполняемый файл в свойство shutdown, но он не работает. Как запустить исполняемый файл до того, как компьютер отключится? Как я могу подключить событие выключения?


2
2018-01-21 15:06


Источник


Вы пытались понять, почему он не работает в системном журнале?
Также вы пробовали его с помощью планировщика задач?
Я нашел решение по аналогичному вопросу


Ответы:


Запуск процесса при завершении работы - это плохая идея. На этом этапе наиболее вероятным результатом является возврат ошибки 1115 ERROR_SHUTDOWN_IN_PROGRESS,

Гораздо лучший способ - установить службу и зарегистрировать услугу для получения уведомлений о завершении работы через RegisterServiceCtrlHandlerEx, см. закрытие:

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

Служба C # сделала это, установив CanShutdown к истине, а затем к обработке OnShutdown мероприятие. Важно быть сервисом, а не приложением, так как остановка может произойти, когда сеанс не вошел в систему и / или несколько сеансов могут работать при завершении работы.


6
2018-01-21 15:15



Это не всегда работает. Я установил CanShutdown в true, реализовал OnShutdown, который записывает в простой файл. Файл никогда не записывается. Служба работает как локальная система, поэтому я знаю, что она имеет разрешения. - jjxtra