Detectar apagado de Windows en Java

Que tal, estoy buscando una solucion para detectar en Java, eventos como el apagado o cierre de sesión de windows, para poder guardar la informacion de mi aplicacion antes de que se cierre ... Intente usar el metodo Runtime.getRuntime().addShutdownHook(Thread), pero el problema es que solo te da un tiempo antes de que el sistema operativo mate el proceso en cualquier momento, y la JVM se detiene inmediatamente. Ademas, la JVM no puede evitar el apagado de windows en caso de que el usuario seleccione la opcion de cancelar...

He estado buscando en internet, y parece ser que la unica opcion es usar JNI para detectar el evento WM_QUERYENDSESSION, que windows lanza a todas las aplicaciones cuando se va a apagar, y al parecer si alguna de esas aplicaciones le regresa un FALSE, el proceso de apagado se detiene...

Quisiera saber si alguien ya ha trabajado en este tipo de problema y me pudiera dar informacion al respecto, ya que no he usado JNI... o si hay alguna otra forma en vez de tener que usar JNI...

De antemano agradezco cualquier consejo que me puedan dar

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de skuarch

orales a mi también me interesa

eso es bueno para poder monitorear algún server, a mi también me interesa