Una pregunta: cuando se apaga el equipo, se llega a ejecutar el evento FormClosing?
Te lo comento porque Windows intenta cerrar las aplicaciones, pero si se resisten lo que termina haciendo es "matarlas" (les envia un signal "kill") y las termina cerrando pero sin pasar por ese evento.
De todas maneras, aquí hay alguien que intentó hacer lo mismo que tú:
http://stackoverflow.com/questions/2...dows-service-c
y le dieron esta solución:
Código:
using System.Runtime.InteropServices;
[DllImport("advapi32.dll", SetLastError=true)]
static extern bool AbortSystemShutdown(string lpMachineName);
if (!AbortSystemShutdown("localhost"))
{
int err = Marshal.GetLastWin32Error();
}