Я знаю, что мой ответ слишком поздно, но я просто вижу этот вопрос прямо сейчас:)
Вы можете обработать системное событие:
Microsoft.Win32.SystemEvents.SessionEnded
Это событие возникает, когда вы выключаете систему или выходите из нее. Обращайтесь с этим, чтобы выполнить любую логику, в которой вы нуждаетесь.
Пример:
@ OnStart () вашего сервиса добавьте следующую строку кода:
Microsoft.Win32.SystemEvents.SessionEnded += new Microsoft.Win32.SessionEndedEventHandler(SystemEvents_SessionEnded);
затем добавьте обработчик события:
void SystemEvents_SessionEnded(object sender, Microsoft.Win32.SessionEndedEventArgs e)
{
//put you logic here
}