Как указал Рид, вы можете получить доступ к журналам событий и посмотреть, когда они были созданы.На самом деле, нет никаких определенных записей о событиях для запуска / выключения системы, но вы можете искать службы, которые обычно запускаются / останавливаются с помощью Windows.Хотя использование этого подхода означает, что он не будет на 100% точным, скажем, если он выйдет из строя или будет запущен / остановлен / перезапущен вручную.Одним из событий, которое я считаю наиболее точным, является событие запуска / остановки службы EventLog.
if (EventLog.Exists("System"))
{
var log = new EventLog("System", Environment.MachineName, "EventLog");
var entries = new EventLogEntry[log.Entries.Count];
log.Entries.CopyTo(entries, 0);
var startupTimes = entries.Where(x => x.InstanceId == 2147489653).Select(x => x.TimeGenerated);
var shutdownTimes = entries.Where(x => x.InstanceId == 2147489654).Select(x => x.TimeGenerated);
}
Редактировать
Оказывается, произошло событие отключения.Вы можете заменить Linq, чтобы получить его:
var shutdownEvents = entries.Where(x => x.InstanceId == 2147484722);