Poniższy opis jest łatwiejszy w przypadku zapytań z klienta systemu Windows przyłączonego do tej samej domeny, co system, którego dotyczy kwerenda, i który może wymagać pewnych uprawnień wykraczających poza standardowy użytkownik domeny. Jeśli napotkasz problemy z uwierzytelnianiem/uprawnieniami, to będę pierwszą rzeczą, którą sprawdzę.
Istnieje narzędzie dostępne co najmniej tak daleko, jak system Windows XP o nazwie "qwinsta". Późniejsze wersje systemu Windows mają zarówno qwinsta, jak i "sesję zapytania".
qwinsta /server:computer01
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console 0 Conn wdcon
rdp-tcp 65536 Listen rdpwd
administrator 2 Disc rdpwd
Pokazuje to, że użytkownik "administrator" jest zalogowany, ale nie jest połączony. Ponieważ w tym przykładzie komputer01 jest systemem Windows Server 2003 z domyślną "administracyjną" licencją RDP, istnieje druga sesja nasłuchująca połączenia.
bieganie to samo polecenie ponownie po podłączeniu do tego wcześniej odłączony sesji wygląda następująco:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
[unchanged output removed]
rdp-tcp#25 administrator 2 Active rdpwd
To wystarczy, aby odpowiedzieć „to osoba aktywna poprzez PROW”, a jeśli używasz nazw użytkowników indywidualnych, powinien także odpowiedzieć "kto". Jeśli wszyscy używasz "testuser" lub "administrator" lub coś podobnego, prawdopodobnie będziesz chciał poznać odpowiedź na "od jakiego klienta", a to nie jest podane powyżej.
Powyższe zawiera szybką odpowiedź podstawową bez użycia dodatkowych narzędzi. Aby uzyskać bardziej szczegółowe informacje, możesz spojrzeć na cassia library lub PSTerminalServices (zbudowany na kasji). Zobacz niektóre z odpowiedzi w this question, aby uzyskać więcej szczegółów.
Moją pierwszą myślą na ten temat było użycie narzędzi Sysinternals, takich jak PsLoggedOn lub LogonSessions. Następnie znalazłem odniesienie do wcześniej nieznanych mi narzędzi qwinsta i rwinsta w this blog post from 2003.
Wielkie dzięki za wszystkie informacje! –