head.WriteLine()

Dienstag, April 11, 2006

Fast User Switching Support in .NET 2.0

Mit Windows XP wurde das so genannte "Fast User Switching" eingeführt, welches das Wechseln zwischen laufenden Benutzer-Sessions ermöglicht. Mit .NET war es bisher jedoch nicht möglich, auf die Umschaltung zu reagieren.

Mit .NET 2.0 wurde diese Limitation nun behoben. Hierfür wurde die Klasse Microsoft.Win32.SystemEvents um die Events SessionSwitch, SessionEnding und SessionEnded erweitert.

Das SessionSwitch-Event ist hierbei das flexibelsten, da es über alle Session-Änderungen informiert. In welcher Form die Umschaltung vollzogen wurde, kann hierbei über die Reason-Eigenschaft der SessionSwitchEventArgs-Klasse ermittelt werden. Sie liefert einen Wert der SessionSwitchReason-Enumeration, die folgende Werte definiert:

  • SessionLock / SessionUnlock
    Eine Session wurde gesperrt oder entsperrt.
  • SessionLogon / SessionLogoff
    Ein Benutzer hat sich an einer Session an- oder abgemeldet.
  • ConsoleConnect / ConsoleDisconnect
    Eine Session wurde über die Konsole hergestellt oder getrennt.
  • RemoteConnect / RemoteDisconnect / SessionRemoteControl
    Eine Session wurde über eine Remoteverbindung hergestellt, getrennt oder geändert.

Wenn Sie jedoch lediglich darüber informiert werden wollen, wenn die aktive Session beendet wird, können Sie sich auch für die Events SessionEnding oder SessionEnded anmelden. Während SessionEnding die Möglichkeit bietet, die Aktion abzubrechen, informiert SessionEnded lediglich über die Beendigung. Zudem bieten beide Events über die Reason-Eigenschaft ihrer EventArgs-Klassen den Grund für die Beendigung (Logoff/SystemShutdown).