Maneiras de verificar se o usuário está ativo na máquina remota antes de fazer o RDP

24

Temos uma máquina Windows XP comum compartilhada entre vários usuários. Todos eles usam um logon de domínio comum para fazer rdp nele. Agora, o problema é que, algumas vezes, acabamos assumindo a sessão ativa de outras pessoas sem que nenhuma das partes seja avisada (nenhum aviso é emitido porque usamos o mesmo login).

Existe uma maneira de testar se o usuário conectado atualmente na máquina remota está ativo (terminal bloqueado?) Ou não?

Não podemos usar o VNC, o LogMeIn ou outros utilitários de compartilhamento de área de trabalho por motivos de segurança (bloqueados pela TI).

Estou bem desenvolvendo algum utilitário de teste rápido (C #, C ++, scripts etc.) também.

Editar:

  1. Como estamos usando o mesmo login - os usuários não estão se desconectando, apenas desconectam ou bloqueiam o terminal.
YetAnotherUser
fonte
2
Gostaria de descobrir como fazer exatamente a mesma coisa, mas no ambiente Win7.
Darius
@ Darius, acabou de encontrar a solução para isso. Ainda não testei no W7, mas espero que isso funcione para você também.
precisa saber é o seguinte
@Darius & YetAnotherUser: Respondi abaixo: superuser.com/a/822743/430
Kevin Worthington

Respostas:

31

Podemos usar qwinstaa Q uery WIN dows STA ção e obter uma lista de todas as sessões ativas.

StateA coluna mostra se um usuário está ativo ou não. Isso requer acesso de administrador na máquina de destino.

Entendi no TechTalkz: Como exibir / desconectar sessões da área de trabalho remota da linha de comando

insira a descrição da imagem aqui

YetAnotherUser
fonte
1
+1 Isso é útil. Eu tenho tentado descobrir o que usei no passado, mas não consegui descobrir. Eu acho que pode ter sido psexec \\COMPUTERNAME net session. Você também pode usar tsdisconpara desconectar.
21311 paradroid
2

Semelhante à resposta aceita, você também pode usar Query.exeassim:

quser /server:<COMPUTERNAME>

Isso resultará no seguinte:

insira a descrição da imagem aqui

Felix D.
fonte
Obter acesso é negado em um prompt de comando elevado. Também estou usando uma conta de administrador de domínio.
Shiv
Funcionou bem para mim, verificando se o RDP-ing inicializaria alguém em um servidor Win 2k8 R2. O status era "Disco" (desconectado), para que eu possa fazer o RDP com segurança.
Adambean 04/04
1

Crie um arquivo BAT para gerar um arquivo em um compartilhamento dizendo que o computador está em uso. Quando um usuário faz login, ele executa e cria esse arquivo. Quando um usuário efetua logout (pode ser feito pelo script GP), ele exclui o arquivo. Verifique o compartilhamento desse arquivo antes de conectar

O canadense Luke REINSTATE MONICA
fonte
1
Sinto muito, eu deveria ter mencionado que - como estamos usando o mesmo login - os usuários não estão se desconectando, apenas desconectam ou bloqueiam o terminal.
precisa saber é o seguinte
1

Você pode usar o comando NET SEND para enviar uma mensagem à máquina para ver se há alguém nela. Isso pode ser facilitado pelo uso de um aplicativo GUI - o link abaixo é o primeiro gratuito que encontrei ao fazer uma pesquisa na Web, por isso ele é apresentado sem nenhum endosso específico.

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

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

Linker3000
fonte
+1 - Envio líquido é uma boa opção. Exige que outro usuário responda para confirmar se está usando a máquina e que seria necessário esperar 4-5 minutos antes de assumir que não está sendo usado. Além disso, é necessário que o serviço Messenger esteja em execução em todos os sistemas, o que não é verdade no nosso caso.
precisa saber é o seguinte
Deve-se observar que o NET SEND foi uma resposta correta para a pergunta, com atualização para o Windows XP, mas não é mais para as versões atuais do Windows, pois o SEND foi removido do NET por questões flagrantes de abuso.
Estou com Monica
1

Outra maneira:

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

(testado no Windows 7)

Kevin Worthington
fonte
Por curiosidade, por que, quando eu tento isso, recebo a mensagem de erro "Acesso negado"?
Darius
Você pode não ter privilégios de administrador no computador remoto.
Kevin Worthington
I "ma administrador net, eu acho que deveria, mas você me apontou na direção certa ....
Darius
Essa é a única resposta listada que deu a opção de especificar em qual usuário conectar-se à máquina remota. Os outros parecem funcionar apenas se você estiver no mesmo domínio e em execução como o usuário com acesso.
LeBleu
0

Assim como na FYI, sei que isso tem mais de um ano, mas mesmo que alguém tenha direitos de administrador de domínio, existem políticas de GPO que podem impedir que determinadas contas de administrador (domínio, empresa, etc.) façam logon remotamente em uma máquina.

Isso ajuda a proteger máquinas que fazem parte de um local remoto de serem administradas remotamente por alguém mais alto na estrutura do AD.

Você pode verificar se está sendo negado, procurando nos computadores de seus relatórios de GPO o computador local sob o

                  gpreport /h report.html

de um prompt de comando administrativo.

Norma
fonte
1
6 anos, mas quem é countng
mic84