Por favor, leia atentamente; esta não é a questão usual do tempo de atividade.
Eu costumo nãodesligarmeu computador por si só, mas em vez disso coloquei-o em suspensão. Isso torna o tempo de inicialização mais rápido e me permite usar o WOL. Os vários métodos de 'tempo de atividade' (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 é levado em consideração.verdadeirotempo de atividade; isto é, apenas o tempo desde a última inicialização que meu PC ficou acordado.
Responder1
Não existe nenhum software que faça isso, então a única maneira de fazer isso é escrevendo um script que basicamente dê +1 a uma variável 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 aumenta.
Provavelmente afetará o sistema se esse script estiver constantemente em execução em segundo plano, então a questão é: o quanto você deseja isso?
(motivo do impacto no script) quanto mais tempo o script for executado, maior será o número, e um valor 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ê subir tão alto, seu sistema deverá estar funcionando por dias/semanas. Claro, 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 irá impactá-lo, mesmo que pouco.
Responder2
O Windows gera um evento de sistema para sair do modo de espera (ID do evento: 1, Fonte: Power-Troubleshooter). Este evento contém os horários de dormir e acordar.
Fonte:Wake Source - Ler log do Visualizador de Eventos - Fóruns de Ajuda do Windows 7
Para determinar o valor do "tempo de atividade real", determine o último horário de inicialização (das fontes mencionadas) e subtraia o tempo gasto dormindo de quaisquer eventos de ativação subsequentes.
Nota: Você pode criar um aplicativo para consultar o log de eventos usando bibliotecas .NET (fora do tópico no superusuário).
Responder3
Quão flexível você é em sua definição de “verdadeiro tempo de atividade”? Uma variação emResposta do LPChip é escrever tarefas agendadas que são acionadas pelo bloqueio e desbloqueio da estação de trabalho e, em seguida, fazer as contas óbvias.
E, caso a matemática não seja óbvia:
- Acompanhe dois valores: tempo de inicialização “lógico” e tempo de atividade cumulativo. 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.
- Eu acho que você também gostaria de um evento que fosse executado na inicialização do sistema ou tivesse algum outro mecanismo para inicializar o tempo de inicialização “lógico” para o tempo de inicialização real.
- Quando a estação de trabalho estiver bloqueada, subtraia o tempo de inicialização lógico do horário atual e salve-o como o tempo de atividade cumulativo.
- Quando a estação de trabalho estiver desbloqueada, subtraia o tempo de atividade cumulativo do tempo atual e salve-o como o tempo de inicialização lógico.
- Mediante solicitação, subtraia o tempo de inicialização lógico do horário atual e relate isso como o tempo de atividade “verdadeiro”. (Isso lhe dará a quantidade total de tempo que o PC ficou desbloqueado.)
Então, por exemplo,
- Se você fizer uma inicialização forçada às 9h, isso salvará 9h como o horário de inicialização lógico.
- Se você bloquear a máquina ao meio-dia, isso economizará 3 horas (meio-dia - 9h) como tempo de atividade cumulativo.
- Se você desbloquear a máquina às 13h, isso salvará 10h (13h - 3 horas) como o tempo de inicialização lógica.
- Se você solicitar tempo de atividade às 18h, isso informará 8 horas
(18h - 10h = (meio-dia - 9h) + (18h - 13h).)
Se você conseguir descobrir como acionar tarefas para serem executadas durante o sono e a vigília, faça isso e você obterá exatamente o que pediu. (Mas colocar a máquina em hibernação acionará a tarefa Lock, e presumo que você tenha seu sistema configurado para exigir desbloqueio após a ativação.)