Как предотвратить выключение или перезагрузку системы в службе Win32?

StackOverflow https://stackoverflow.com/questions/1329001

Вопрос

я хочу запретить пользователям выключать или перезагружать систему.мое приложение работает как собственная служба Win32 (написанная на C++) и под учетной записью LocalSystem.

я слышал о WM_QUERYENDSESSION, это решение:создание скрытого окна и захват WM_QUERYENDSESSION для предотвращения завершения работы.

но это решение не совсем чистое и требует создания одного окна для каждого рабочего стола.Поэтому мне нужно перечислить рабочие столы, а также позаботиться о том, когда рабочий стол создавался/удалялся.Все это усложняет ситуацию!

Есть ли способ обнаружить событие выключения/перезапуска и предотвратить выключение/перезапуск системы?

(Не важно, завершение события или перезапуск, оба они должны быть отменены!)

Это было полезно?

Решение

Вы не можете.

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

Если пользователь прикажет системе выключиться или перезагрузиться, именно это и произойдет.

Кстати, WM_QUERYENDSESSION передается, когда текущий пользователь выходит из Windows.Это уведомление, не более того, и если вы используете его по-другому, значит, вы используете его неправильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top