Pregunta

Estoy haciendo una aplicación que se utiliza para borrar los archivos TEMP, el historial, etc., cuando el usuario inicia sesión. Entonces, ¿cómo puedo saber si el sistema va a iniciar sesión (en C#)?

¿Fue útil?

Solución

Hay una propiedad en Ambiente clase que cuenta sobre si el proceso de cierre ha comenzado:

Environment.HasShutDownStarted

Pero después de buscar en Google descubrí que esto puede ser de ayuda para usted:

 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
     }
  }

Pero si solo desea borrar el archivo TEMP, entonces creo que distinguir entre el cierre o el cierre de sesión no es de ninguna consecuencia para usted.

Otros consejos

Si necesita específicamente el evento de inicio de sesión, puede modificar el código proporcionado en la respuesta de TheVillageIdiot de la siguiente manera:

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
    }
}

Puede usar WMI y ver el Win32_ComputershutdownEvent donde el tipo es igual a 0. Puede encontrar más información sobre este evento aquí, y más sobre el uso de WMI en .NET aquí.

Si tienes un Formulario de Windows, puedes manejar el FormClosing evento, luego revise el e.CloseReason valor de enumación para determinar si es igual a CloseReason.WindowsShutDown.

private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        // Your code here
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top