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

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

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

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

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

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

1 Ответ

1 голос
/ 25 августа 2009

Вы не можете.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...