Пожалуйста, прочитайте внимательно; это не обычный вопрос о времени безотказной работы.
Я не склоненнеисправностьмой компьютер как таковой, но вместо этого перевести его в спящий режим. Это ускоряет время загрузки и позволяет мне использовать WOL. Различные методы «uptime» (sysinfo, uptime.exe, Task Manager и т. д.) покажут время с момента последней полной загрузки, что означает, что время, проведенное в спящем режиме, учитывается. Я ищуистинныйвремя безотказной работы; то есть только время с момента последней загрузки, которое мой ПК провел в состоянии бодрствования.
решение1
Нет программного обеспечения, которое делает это, поэтому единственный способ сделать это — написать скрипт, который в основном дает переменной +1 каждую секунду (или минуту), и иметь способ считывать значение переменной. Если ваш ПК находится в режиме гибернации/сна/и т. д., скрипт не работает, поэтому счетчик не увеличивается.
Если такой скрипт постоянно работает в фоновом режиме, это, скорее всего, повлияет на работу системы, поэтому вопрос в том, насколько сильно вам это нужно?
(причина влияния на скрипт) чем дольше выполняется скрипт, тем больше становится число, а действительно большое значение означает, что ему нужно больше памяти для хранения. (речь идет о значениях, которые не могут быть целыми числами (65535), но я предполагаю, что если вы установите такое большое значение, ваша система должна работать в течение нескольких дней/недель. Конечно, вы можете написать свой скрипт для подсчета дней и сброса значения, что исключит это, но если тогда ваш скрипт выполняет больше кода в своем цикле, это само по себе также повлияет на него, пусть и незначительно.
решение2
Windows генерирует системное событие для выхода из спящего режима (Идентификатор события: 1, Источник: Power-Troubleshooter). Это событие содержит время сна и пробуждения.
Источник:Источник пробуждения - Чтение журнала просмотра событий - Форумы помощи Windows 7
Чтобы определить значение «истинного времени безотказной работы», определите время последней загрузки (из указанных вами источников), а затем вычтите время, проведенное в спящем режиме, из всех последующих событий пробуждения.
Примечание: Вы можете создать приложение для запроса журнала событий с помощью библиотек .NET (не по теме Super User).
решение3
Насколько вы гибки в своем определении «истинного времени безотказной работы»? Вариация на темуОтвет LPChip заключается в написании запланированных задач, которые запускаются при блокировке и разблокировке рабочей станции, а затем в выполнении очевидных математических вычислений.
И, если математика не очевидна:
- Отслеживайте два значения: «логическое» время загрузки и кумулятивное время безотказной работы. Только одно из них будет действительным в каждый момент времени. Поэтому, возможно, вам также понадобится флаг, чтобы отслеживать, какое из них действительно, хотя это можно практически определить по контексту.
- Полагаю, вам также понадобится событие, запускаемое при загрузке системы, или какой-то другой механизм для инициализации «логического» времени загрузки в фактическое время загрузки.
- Когда рабочая станция заблокирована, вычтите логическое время загрузки из текущего времени и сохраните это как совокупное время безотказной работы.
- Когда рабочая станция разблокирована, вычтите совокупное время безотказной работы из текущего времени и сохраните это значение как логическое время загрузки.
- По запросу вычтите логическое время загрузки из текущего времени и сообщите это как «истинное» время безотказной работы. (Это даст вам общее количество времени, в течение которого ПК был разблокирован.)
Так, например,
- Если вы выполните жесткую загрузку в 9 утра, это сохранит 9 утра как логическое время загрузки.
- Если вы заблокируете машину в полдень, это сэкономит 3 часа (полдень - 9 утра) совокупного времени безотказной работы.
- Если вы разблокируете компьютер в 13:00, это сэкономит 10 утра (13:00 − 3 часа) в качестве логического времени загрузки.
- Если вы запросите время безотказной работы в 18:00, будет получен отчет о 8 часах
(18:00 − 10:00 = (полдень − 9:00) + (18:00 − 13:00).
Если вы можете понять, как запускать задачи при переходе в спящий режим и пробуждении, сделайте это, и вы получите именно то, что просили. (Но перевод машины в спящий режим запустит задачу блокировки, и я предполагаю, что ваша система настроена на требование разблокировки после пробуждения.)