如何获取上次系统 shutdown\boot 时间 (Win10)
How to get last system shutdown\boot time (Win10)
我尝试获取上次系统关闭 and\or 重启。
但它对我不起作用。
我昨天重启了我的机器,并在 10 分钟前关闭了电源。
但代码告诉我上次关机 - 这是昨天。
我看了这个问题:
Get the date-time of last windows shutdown event using .NET
How to know when was Windows started or shutdown?
但它不适用于我的机器。
我试试这个代码:
var _rebootPerformanceCounter = new global::System.Diagnostics.PerformanceCounter("System", "System Up Time");
_rebootPerformanceCounter.NextValue();
var uptimeSpan = TimeSpan.FromSeconds(_rebootPerformanceCounter.NextValue());
var uptime = uptimeSpan.ToString();
还有这个:
string sKey = @"System\CurrentControlSet\Control\Windows";
using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sKey))
{
string sValueName = "ShutdownTime";
byte[] val = (byte[]) key.GetValue(sValueName);
long valueAsLong = BitConverter.ToInt64(val, 0);
var shutdownTime= DateTime.FromFileTime(valueAsLong);
Console.WriteLine(shutdownTime); //THIS
}
还有这个:
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);
var shutdownEvents = entries.Where(x => x.InstanceId == 2147484722);
}
因此,值是相同的:它说我昨晚重新启动了我的机器并且没有显示上次关机时间。
我在 PC 和笔记本电脑上尝试此代码,结果相同。
在我的电脑上,我有不间断电源装置,我把它关掉了。
所以我很困惑。我做错了什么?
解决方法很简单:我应该用 -
关闭“聪明的电源管理”
powercfg -h off
代码有效!
我尝试获取上次系统关闭 and\or 重启。 但它对我不起作用。
我昨天重启了我的机器,并在 10 分钟前关闭了电源。 但代码告诉我上次关机 - 这是昨天。
我看了这个问题:
Get the date-time of last windows shutdown event using .NET
How to know when was Windows started or shutdown?
但它不适用于我的机器。
我试试这个代码:
var _rebootPerformanceCounter = new global::System.Diagnostics.PerformanceCounter("System", "System Up Time");
_rebootPerformanceCounter.NextValue();
var uptimeSpan = TimeSpan.FromSeconds(_rebootPerformanceCounter.NextValue());
var uptime = uptimeSpan.ToString();
还有这个:
string sKey = @"System\CurrentControlSet\Control\Windows";
using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sKey))
{
string sValueName = "ShutdownTime";
byte[] val = (byte[]) key.GetValue(sValueName);
long valueAsLong = BitConverter.ToInt64(val, 0);
var shutdownTime= DateTime.FromFileTime(valueAsLong);
Console.WriteLine(shutdownTime); //THIS
}
还有这个:
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);
var shutdownEvents = entries.Where(x => x.InstanceId == 2147484722);
}
因此,值是相同的:它说我昨晚重新启动了我的机器并且没有显示上次关机时间。 我在 PC 和笔记本电脑上尝试此代码,结果相同。 在我的电脑上,我有不间断电源装置,我把它关掉了。
所以我很困惑。我做错了什么?
解决方法很简单:我应该用 -
关闭“聪明的电源管理” powercfg -h off
代码有效!