В классе Environment имеется свойство, которое сообщает о том, начался ли процесс завершения работы:
Environment.HasShutDownStarted
Но после некоторого поиска в Google я узнал, что это может вам помочь:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (Environment.HasShutdownStarted)
{
//Tackle Shutdown
}
else
{
//Tackle log off
}
}
Но если вы хотите очистить только временный файл, то я думаю, что различие между выключением или выходом из системы не имеет для вас никакого значения.