Consultando uma caixa do Windows para ver se o usuário atualmente conectado está ocioso - de preferência usando o WMI

1

Eu quero poder consultar se o usuário atualmente logado está ocioso em seu PC - ou seja, seu PC acredita que ele está 'inativo' ... O problema é que existem muitas maneiras de fazer isso. Existe um universal: "ESTE COMPUTADOR ESTÁ IDO / INATIVO" - Estou pensando em usar qualquer medida que o subsistema de energia usa ...

Meu pensamento é usar o WMI / Powershell, mas eu também poderia usar uma chamada .NET em C # - eu preferiria não!

Desculpe ser um pouco vago e estou mais do que feliz por alguém poder editar minha pergunta em algo mais significativo!

Mike

    
por Mike McClelland 06.07.2009 / 09:56

2 respostas

3

Se você estiver disposto a hackeá-lo e procurar por um protetor de tela para eliminar a inatividade, você também pode usar o powershell para ver se a sessão está inativa (ou seja, o computador está bloqueado):

QUERY SESSION /server:MachineName UserName

ele usa a interface de serviços de terminal para ver se um usuário está conectado a uma sessão. Isso funciona porque, nas versões modernas do Windows, todos os usuários locais são tratados como sessões de console do computador. Os dois status de interesse são:

  • Ativo : conectado e usando
  • Desconectado : logado, mas a tela está bloqueada ou o usuário está desconectado

Como é baseado na antiga funcionalidade qwinsta, em vez de ser totalmente OO, você precisará fazer alguma manipulação de string se quiser um booleano (isto é, "Active").

Para uma figura precisa (e quais são eles mesmos os protetores de tela), olhe para a chamada da API win32 LastInputInfo () , mas é necessário executá-la no contexto do usuário, que geralmente é um separador de negócios. você precisa de monitoramento remoto. Aqui está o artigo do MSDN: link

    
por 08.07.2009 / 19:24
2

Não é a resposta simples.

No passado, usei o WMI para listar os processos em execução e procurei a proteção de tela. Se a proteção de tela estiver em execução, eles estarão inativos em um sentido, embora você ainda não saiba se eles deixaram um aplicativo em execução. Você pode verificar coisas como CPU e / ou atividade de disco, mas é difícil obter uma resposta firme disso.

JR

    
por 06.07.2009 / 09:59