Ich versuche, eine Möglichkeit zu finden, eine Liste von Windows-Sitzungen zu erhalten. Ich benötige die gleichen Informationen wie die, die im Task-Manager auf der Registerkarte Benutzer angezeigt werden. Ich muss wissen, ob der Benutzer aktiv ist oder nicht und ob er / sie in der Remotedesktopsitzung angemeldet ist.
Irgendeine Idee, wie man das mit C # / Windows XP Pro macht?
Ich glaube, Sie müssen P / Invoke verwenden, um diese Informationen abzurufen.
Die relevanten APIs sind in dieser MSDN-Seite dokumentiert.
Verwenden Sie LsaEnumerateLogonSessions über P / Invoke. Sie benötigen auch LsaFreeReturnBuffer , um nach der Aufzählung aufzuräumen.
Sie müssen Pinvoke nicht verwenden. WMI tut es, und nun: "Wählen Sie Name, SessionId aus Win32_Process" im Namespace root \ cimv2. Und es kann von einer entfernten Maschine aus aufgerufen werden. Einfacher. Fügen Sie eine Where-Klausel in die Auswahl ein, um eine Feinabstimmung vorzunehmen, was Sie erhalten.