Se me ocurre que se puede hacer algo parecido; nosotros podemos recivir algo de informacion al momento en el que usuario reinicia... esto con el mensaje WM_QUERYENDSESSION, WM_ENDSESSION, WM_QUIT, etc... la idea en general es denegar el intento de apagado (por ejemplo), pero al momento de detectar tal evento ejecutar
shutdown.exe, que es un utilitario del Güindos.
Código:
shutdown -f -r -t 120
El ejemplo anterión forzará el reiniciado del equipo en 120 segundos
Saludos