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