c# - 使用 .NET 获取上次 Windows 关闭事件的日期时间

标签 c# .net time wmi shutdown

有没有办法找出系统上次关闭的时间?

我知道有一种方法可以使用 WMI 使用 Win32_OperatingSystem 命名空间中的 LastBootUpTime 属性找出上次启动时间。

有没有类似的方法可以查出上次关机时间?

谢谢。

最佳答案

(这里的所有内容都是 100% 由 JDunkerley's earlier answer 提供)

解决方案如上,但是使用 BitConverter 可以用更少的语句实现从 byte 数组到 DateTime 的方法。以下六行代码执行相同的操作,并从注册表中提供正确的 DateTime:

public static DateTime GetLastSystemShutdown()
{
    string sKey = @"System\CurrentControlSet\Control\Windows";
    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);
    return DateTime.FromFileTime(valueAsLong);
}

关于c# - 使用 .NET 获取上次 Windows 关闭事件的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631933/

相关文章:

c++ - 应用程序的 .exe 文件缺少 .NET TargetFramework,但仅在干净的构建中

php - 当时间是午夜时,执行 mysql_query

c# - 如何发布数据并重定向到外部页面?

c# - 为什么我使用库 A 的 C# 客户端需要有库 B(A 使用)的 using 语句

c# - 在 Windows 应用程序 ListView 控件中包装项目

Java比较时间和时区

java - 如何将时间存储在变量中?

c# - 当前上下文中不存在名称InitializeComponent

c# - 如果属性使用注释属性,为什么 setter 必须为空?

c# - 如何使用多参数linq从数据库中获取记录