Como cancelar o desligamento de um serviço do Windows C #

Eu tenho um serviço do Windows iniciado (escrito em C # .net2.0).

Quero detectar quando o computador desliga / reinicia e o cancela. Após o cancelamento, quero executar algumas ações e reiniciar o Windows.

Eu tentei, mas não está funcionando

using Microsoft.Win32;
partial class MyService: ServiceBase
{
    protected override void OnStart(string[] args)
    {
        SystemEvents.SessionEnding += new SessionEndingEventHandler(OnSessionEnding);
    }

    private void OnSessionEnding(object sender, SessionEndingEventArgs e)
    {
        e.Cancel = true;
        //Do some work...
    }
}

Outro teste:

partial class MyService: ServiceBase
{
    protected override void OnShutdown()
    {
        //Do some work...
        //base.OnShutdown();
    }
}

questionAnswers(6)

yourAnswerToTheQuestion