Sposoby sprawdzania, czy użytkownik jest aktywny na zdalnym komputerze przed uruchomieniem RDP

24

Mamy wspólną maszynę z systemem Windows XP, która jest współużytkowana przez wielu użytkowników. Wszystkie używają wspólnego loginu domeny, aby uzyskać do niego rdp. Problem w tym, że czasami przejmujemy aktywną sesję innych osób bez ostrzeżenia którejkolwiek ze stron (żadne ostrzeżenie nie jest wydawane, ponieważ używamy tego samego loginu).

Czy istnieje sposób sprawdzenia, czy aktualnie zalogowany użytkownik na zdalnej maszynie jest aktywny (terminal zablokowany?), Czy nie?

Nie możemy używać VNC, LogMeIn ani innych narzędzi do udostępniania pulpitu ze względów bezpieczeństwa (blokowane przez dział IT).

Mogę również opracować narzędzie do szybkiego testowania (C #, C ++, skryptowanie itp.).

Edytować:

  1. Ponieważ używamy tego samego logowania - użytkownicy nie wylogowują się, po prostu odłączają lub blokują terminal.
YetAnotherUser
źródło
2
Chciałbym dowiedzieć się, jak zrobić dokładnie to samo, ale w środowisku Win7.
Dariusz
@Darius, właśnie znalazłem rozwiązanie tego problemu. Nie testowałem tego na W7, ale mam nadzieję, że to również zadziała.
YetAnotherUser
@Darius & YetAnotherUser: Odpowiedziałem poniżej: superuser.com/a/822743/430
Kevin Worthington

Odpowiedzi:

31

Możemy użyć qwinstado Q uery WIN Dows STA cji i uzyskać listę wszystkich aktywnych sesji.

Statekolumna pokazuje, czy użytkownik jest aktywny, czy nie. Wymaga to dostępu administratora na komputerze docelowym.

Masz to w TechTalkz: Jak wyświetlać / odłączać sesje pulpitu zdalnego od wiersza poleceń

wprowadź opis zdjęcia tutaj

YetAnotherUser
źródło
1
+1 To jest przydatne. Próbowałem rozgryźć, czego użyłem w przeszłości, ale nie mogłem tego rozgryźć. Myślę, że mogło być psexec \\COMPUTERNAME net session. Możesz także użyć tsdiscondo rozłączenia.
paradroid
2

Podobna do zaakceptowanej odpowiedzi, której możesz użyć w Query.exenastępujący sposób:

quser /server:<COMPUTERNAME>

Spowoduje to, że:

wprowadź opis zdjęcia tutaj

Felix D.
źródło
1
Uzyskiwanie dostępu jest zabronione z poziomu wiersza polecenia z podwyższonym poziomem uprawnień. Używam również konta administratora domeny.
Shiv
Sprawdziło się dla mnie sprawdzanie, czy RDP-ing uruchomi kogoś z serwera Win 2k8 R2. Status to „Dysk” (odłączony), więc mogę bezpiecznie włączyć RDP.
Adambean
1

Utwórz plik BAT generuje plik na udziale informujący, że komputer jest używany. Gdy użytkownik się loguje, uruchamia się i tworzy ten plik. Kiedy użytkownik się wylogowuje (można to zrobić za pomocą skryptu GP), usuwa plik. Sprawdź udział dla tego pliku przed połączeniem

Kanadyjczyk Luke REINSTATE MONICA
źródło
1
Przepraszam, że powinienem wspomnieć, że - ponieważ używamy tego samego loginu - użytkownicy nie wylogowują się, po prostu odłączają lub blokują terminal.
YetAnotherUser
1

Możesz użyć polecenia NET SEND, aby wysłać wiadomość do maszyny, aby sprawdzić, czy ktoś na niej jest. Można to ułatwić za pomocą aplikacji GUI - poniższy link jest pierwszym darmowym, który znalazłem, przeprowadzając wyszukiwanie w sieci, więc przychodzi bez specjalnego poparcia.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_send.mspx

http://www.fomine.com/netsend.html

Linker3000
źródło
+1 - Net Send to dobra opcja. Wymaga od innego użytkownika odpowiedzi na potwierdzenie, że korzysta on z maszyny i niepotrzebnie trzeba poczekać 4-5 minut, zanim założymy, że nie jest on używany. Ponadto wymaga, aby usługa Messenger działała na wszystkich systemach, co nie jest prawdą w naszym przypadku.
YetAnotherUser
Należy zauważyć, że NET SEND było prawidłową odpowiedzią na zadane pytanie, odnosząc się do Windows XP, ale nie jest już w przypadku bieżących wersji systemu Windows, ponieważ SEND został usunięty z NET z powodu rażących nadużyć.
Jestem z Monicą
1

Inny sposób:

wmic.exe /node:<computername or IP address> computersystem get username

(testowany na Windows 7)

Kevin Worthington
źródło
Z ciekawości, dlaczego po wypróbowaniu tego pojawia się komunikat o błędzie „Odmowa dostępu”?
Dariusz
Na komputerze zdalnym możesz nie mieć uprawnień administratora.
Kevin Worthington
Jestem administratorem sieci, myślę, że powinienem, ale wskazałeś mi właściwy kierunek ....
Dariusz
Jest to jedyna wymieniona odpowiedź, która dała opcję określania, który użytkownik ma się połączyć ze zdalnym komputerem jako. Inne wydają się działać tylko wtedy, gdy jesteś w tej samej domenie i działa jako użytkownik z dostępem.
LeBleu
0

Podobnie jak FYI, wiem, że ma ponad rok, ale nawet jeśli ktoś ma uprawnienia administratora domeny, istnieją zasady GPO, które mogą blokować pewne konta administracyjne (domena, przedsiębiorstwo itp.) Przed zdalnym zalogowaniem się na maszynę.

Ma to na celu ochronę maszyn będących częścią zdalnej lokalizacji przed zdalnym zarządzaniem przez osobę znajdującą się wyżej w strukturze AD.

Możesz sprawdzić, czy odmawia się tego, przeglądając raporty GPO dla lokalnej maszyny pod

                  gpreport /h report.html

z administracyjnego wiersza polecenia.

Norma
źródło
1
6 lat, ale kto liczy
mic84