Frage

Ich mache eine Anwendung, mit der die TEMP -Dateien, der Verlauf usw. gelöscht werden, wenn sich der Benutzer abmeldet. Woher kann ich wissen, ob das System (in C#) einmeldet wird?

War es hilfreich?

Lösung

Es gibt eine Immobilie in Umfeld Klasse, der darüber informiert wird, ob der Abschaltprozess begonnen hat:

Environment.HasShutDownStarted

Aber nach einigem Googeln fand ich heraus, dass dies Ihnen hilfreich sein könnte:

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

Wenn Sie jedoch nur die Temp -Datei löschen möchten, dann denke ich, dass es für Sie keine Konsequenz ist, zwischen dem Herunterfahren oder dem Abmeldung zu unterscheiden.

Andere Tipps

Wenn Sie das Log-off-Ereignis speziell benötigen, können Sie den Code in der Antwort von TheVillageIdiot wie folgt ändern:

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

Sie können WMI verwenden und den Win32_ComputershutdownEvent ansehen, bei dem der Typ gleich 0 ist. Weitere Informationen zu diesem Ereignis finden Sie hier, und mehr über die Verwendung von WMI in .NET hier.

Wenn Sie eine haben Windows -Formular, Sie können mit dem umgehen FormClosing Ereignis, dann überprüfen Sie die e.CloseReason Umlaufwert, um festzustellen, ob er gleich ist CloseReason.WindowsShutDown.

private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        // Your code here
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top