Mitunter möchte man Wissen, bevor man an einem Computer etwas aus der Ferne unternimmt, ob der Anwender gerade angemeldet bzw. genauer ausgedrückt vor dem Bildschirm sitzt oder nicht.

Ob generell ein Benutzer angemeldet ist, lässt sich einfach mit

query session

bzw.

query session /server:<Computer>

herausfinden:

 SITZUNGSNAME      BENUTZERNAME             ID  STATUS
 services                                    0  Getr.
 console           sekretariat               1  Aktiv
 rdp-tcp                                 65536  Abhör.

Leider liefert diese Ausgabe nicht den Status der Konsolensitzung, den dort steht lediglich “Aktiv” ohne Angabe, ob die Konsole nun gesperrt ist oder nicht.

Hinweis: Steht beim Status “Verb.” ist jemand per Remotedesktopverbindung (RDP) mit dem System verbunden, diese Sitzung erscheint dann ebenfalls in der Ausgabe.

Ob die Konsole nun gesperrt ist lässt sich schlicht durch das Vorhandensein des Prozesses “logonui.exe” feststellen. Ist dieser Prozess vorhanden, ist die Konsole gesperrt, ist Dieser nicht vorhanden, ist die Konsole entsperrt.

Mit tasklist kann lokal wie auch remote nach diesem Prozess gesucht werden:

tasklist /s <Computer> /fi "IMAGENAME eq logonui.exe"

Die Ausgabe(n) sehen dann wie folgt aus:

C:\Users\administrator>tasklist /fi "IMAGENAME eq logonui.exe"

Abbildname                     PID Sitzungsname       Sitz.-Nr. Speichernutzung
========================= ======== ================ =========== ===============
LogonUI.exe                    852 Console                    1        28.172 K

C:\Users\administrator>tasklist /s pc03 /fi "IMAGENAME eq logonui.exe"
INFORMATION: Es werden keine Aufgaben mit den angegebenen Kriterien ausgeführt.

Mit PsExec kann eine Abfrage so aussehen:

psexec64.exe \\pc03 tasklist | find /i "logonui.exe"