Пожалуйста, прочитайте - это не дубликат .

У меня есть служба Windows, которая работает под локальной системой acct. Мне нужно восстановить определенные файлы перед выключением. Я могу перехватить действие «Завершение работы», и в этот момент я запускаю процесс восстановления, но завершение происходит до того, как я смогу завершиться. Я включил привилегии завершения работы, добавил вызовы AbortShutdown (Win32) и несколько других (то есть shutdown / a) параметров, но они не работают. Я полагаю, что это потому, что отключение или перезапуск уже были инициированы, и я прочитал, что эти функции останавливают отключение, только когда это запланировано.

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

Я открыт для любых предложений и ценю ваше время и внимание. Спасибо!

-2
Jeff 30 Май 2019 в 19:48

2 ответа

Лучший ответ

Ваша цель несостоятельна. В Windows пользователь может контролировать процесс выключения. Если пользователь хочет выключить компьютер, ваше программное обеспечение не должно противоречить намерениям пользователя.

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

Файлы, о которых вы говорите, которые вы должны восстановить перед выключением, должны быть «восстановлены» (трудно точно сказать, что вы здесь имеете в виду), как только над ними будут выполнены какие-либо операции. Без дальнейших подробностей сложно обсудить конкретные подходы.

0
Mark Benningfield 30 Май 2019 в 17:39

Это больше похоже на то, что можно сделать с помощью пакетных файлов Windows.

1
SomeNerdAtWork 30 Май 2019 в 18:07