I am doing an application which is used to clear the Temp files, history etc, when the user log off. So how can I know if the system is going to logoff (in C#)?
A:
There is a property in Environment class that tells about if shutdown process has started:
Environment.HasShutDownStarted
But after some googling I found out that this may be of help to you:
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
}
}
But if you only want to clear temp file then I think distinguishing between shutdown or log off is not of any consequence to you.
TheVillageIdiot
2009-06-12 04:15:30
Keep in mind though, on Vista+ you have very little time to do stuff during shutdown, so make sure that you can't block or wait for any reason (i.e. trying to delete a file that might be on a network share, etc...)
Paul Betts
2009-06-12 21:34:08
thanks @Paul then should it be advisable to make an entry somewhere so that windows clear the stuff on next reboot or login?
TheVillageIdiot
2009-06-13 02:42:49
A:
If you specifically need the log-off event, you can modify the code provided in TheVillageIdiot's answer as follows:
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 (e.Reason == SessionEndReasons.Logoff)
{
// insert your code here
}
}
Ben
2009-06-12 14:45:49