Mit VisualStudio2012 und den KMDF-Templates kannst du dir (auch ohne große c++ Kenntnisse) einen Treiber kompilieren der Shutdown und Hibernate warten lässt. Das bringt dir beim Shutdown zwar nix wenn jemand auf "Sofort Herunterfahren" klickt, aber ansonsten kannst du damit genau das machen was du brauchst. In den Templates von den PnP-Treibern sind schon fertige Codesnippets dafür - ist nur ein wenig Sucharbeit. Der Haken dabei ist, dass du zum installieren des Treibers einmal in den Debug-modus von Windows musst sofern die Zielplatform Windows7/Server2008 64bit ist.
Edit: ansonsten ließe sich mit einem Treiber auch zwShutDownSystem und zwHibernateSystem aus der ntkernel.exe hooken - aber da kommts dann darauf an wie Schmerzbefreit du beim debugging bist, denn das ist ne haarige Angelegenheit, wie mit allen undokumentierten
API Funktionen eben.
Edit2: und mal andersrum gedacht; warum nicht einfach die Taskleiste/Startmenü(=explorer) oder das Programm hooken, was den Shutdown-Befehl initial auslöst?