Announcement

Collapse
No announcement yet.

Benutzersitzung: Logoff abfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Benutzersitzung: Logoff abfragen

    Hi,

    ich hab folgende Problematik und finde keinen passablen Ansatz und beim Programmstart abzufragen ob die Sitzung gerade einen Logout durchführt:
    * ich habe eine Client-Server-Architektur, bei denen Client und Server über WCF miteinander kommunizieren
    * clientseitig läuft ein Windows-Dienst, der bei allen angemeldeten Benutzern einen Sitzungsclient startet und dafür sorgen soll, dass dieser immer läuft
    * dieser Sitzungsclient stellt dann eine Verbindung mit dem Server her
    * meldet sich ein User ab, wird die Verbindung sauber getrennt bevor der Sitzungsclient beendet wird (das frage ich mittels Closing-Event beim Window und mittels Microsoft.Win32.SystemEvents.SessionEnding ab)
    * dummerweise startet der Dienst dann direkt den Sitzungsclient erneut, der verbindet, beginnt seine ersten Tätigkeiten und wird dann vom Windows wieder abgewürgt - je nach Geschwindigkeit der Arbeitsstation passiert das während des Logouts mehrere Male

    Ich habe natürlich auch schon gegoogelt ob es eine Möglichkeit gibt abzufragen ob die eigene Sitzung gerade dabei ist sich abzumelden, aber ohne Erfolg. In diesem Fall könnte ich dann einfach den ganzen Connect-Vorgang überspringen und einfach garnichts tun. Auf Events braucht man da nicht hoffen, da der Logout ja schon begonnen hat bevor das Programm startet. Environment.HasShutdownStarted scheint nur beim Herunterfahren/Neustarten zu greifen und auch GetSystemMetrics(SystemMetric.SM_SHUTTINGDOWN) führt leider nicht zum Ziel. Mir kam auch schon der Gedanke mit WTSQuerySessionInformation vielleicht passende Infos herauszubekommen, aber das scheint mir auch eine Sackgasse zu sein.
    Das bisher interessanteste war dieser Thread http://www.c-plusplus.de/forum/307653-full aber da geht es eher darum den Logout hinauszuzögern bis das Programm fertig ist mit einer Tätigkeit also auch nicht das richtige.

    Vieleicht über WMI? Gäbe es da einen Ansatzpunkt? Wäre super, wenn mir da jemand nen Schubbser in die richtige Richtung geben könnte...
Working...
X