Windows 8.1: Como verificar o tempo de atividade 'verdadeiro'?

3

Por favor, leia com atenção; esta não é a questão usual de tempo de atividade.

Eu não tento desligar o meu computador em si, mas colocá-lo em suspensão. Isso torna os tempos de inicialização mais rápidos e permite que eu use o WOL. Os vários métodos de 'uptime' (sysinfo, uptime.exe, Gerenciador de Tarefas, etc) mostrarão o tempo desde a última inicialização completa, o que significa que o tempo gasto dormindo é considerado. Estou procurando por tempo de atividade true ; ou seja, apenas o tempo desde a última inicialização que meu PC passou desperto.

    
por seagull 17.07.2015 / 22:29

3 respostas

1

Não há software que faça isso, então a única maneira de fazer isso é escrevendo um script que basicamente dê uma variável a +1 a cada segundo (ou minuto) e tenha uma maneira de ler o valor da variável. Se o seu PC estiver em hibernação / suspensão / etc, o script não está em execução, portanto, o contador não é aumentado.

É provável que isso cause impacto no sistema se tal script estiver sendo executado constantemente em segundo plano, então a questão é: o quanto você quer isso?

(motivo do impacto no script) quanto mais tempo o script é executado, maior o número se torna e um valor que é realmente alto significa que ele precisa de mais memória para armazenar. (falando sobre valores que não podem ser inteiros (65535), mas suponho que, se você for tão alto, seu sistema deve estar funcionando por dias / semanas. Naturalmente, você poderia escrever seu script para contar dias e redefinir o valor que eliminaria isso, mas se, então, o seu script estiver passando por mais código em seu ciclo, o que por si só também causará impacto, mesmo que pouco.

    
por 17.07.2015 / 22:36
1

O Windows gera um evento do sistema para acordar do modo de espera (ID do Evento: 1, Fonte: Solucionador de problemas de energia). Este evento contém os tempos de sono e vigília.

Fonte: Wake Source - Leia o Log do Visualizador de Eventos - Ajuda do Windows 7 Fóruns

Para determinar seu valor de "tempo de atividade real", determine o último tempo de inicialização (das fontes que você mencionou) e subtraia o tempo gasto dormindo de qualquer evento de despertar subsequente.

Observação: você pode criar um aplicativo para consultar o log de eventos usando bibliotecas .NET (fora do tópico no Superusuário).

    
por 17.07.2015 / 22:49
0

Quão flexível você está na sua definição de "uptime real"? Uma variação da resposta do LPChip é gravar tarefas agendadas que são acionadas pelo bloqueio de estação de trabalho e desbloqueio da estação de trabalho e, em seguida, faça a matemática óbvia.

E, caso a matemática não seja óbvia:

  1. Mantenha o controle de dois valores: boothime "lógico" e tempo de atividade acumulado. Apenas um deles será válido por vez. Então, sem dúvida, você também precisa de um sinalizador para saber qual deles é válido, embora isso possa ser praticamente determinado pelo contexto.
  2. Acho que você também deseja um evento que seja executado na inicialização do sistema, ou tem algum outro mecanismo para inicializar o boothime "lógico" para o boottime real.
  3. Quando a estação de trabalho está bloqueada, subtrair o boottime lógico do tempo atual e salve isso como o tempo de atividade acumulado.
  4. Quando a estação de trabalho está desbloqueada, subtrair o tempo de atividade acumulado do tempo atual e salve isso como o boothime lógico.
  5. a pedido subtrair o boottime lógico do tempo atual e relatar isso como o tempo de atividade "verdadeiro". (Isso lhe dará o tempo total que o PC foi desbloqueado.)

Então, por exemplo,

  1. Se você fizer um boot pesado às 9h, isso salvará 9h como o boothime lógico.
  2. Se você bloquear a máquina ao meio-dia, isso economiza 3 horas (meio-dia - 9 horas) como o tempo de atividade acumulado.
  3. Se você desbloquear a máquina às 13:00, isso economiza 10h (13h - 3h) como o boothime lógico.
  4. Se você solicitar tempo de atividade às 18h, isso reporta 8 horas | (18h - 10h = (meio-dia - 9h) + (18h - 13h).

Se você puder descobrir como acionar tarefas para serem executadas durante o sono e a vigília, então faça isso, e você terá exatamente o que pediu. (Mas colocar a máquina em repouso acionará a tarefa de bloqueio, e eu suponho que você tenha o seu sistema configurado para exigir o desbloqueio após o despertar.)

    
por 18.07.2015 / 00:15