3

如何使用 C# 获取 Windows 的原始安装日期?

4

2 回答 2

9

这个网站,使用注册表而不是 WMI(未经测试):

public static DateTime GetWindowsInstallationDateTime(string computerName)
{
    Microsoft.Win32.RegistryKey key = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, computerName);
    key = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", false);
    if (key != null)
    {
        DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        Int64 regVal = Convert.ToInt64(key.GetValue("InstallDate").ToString());

        DateTime installDate = startDate.AddSeconds(regVal);

        return installDate;
    }

    return DateTime.MinValue;
}
于 2012-06-21T07:34:57.077 回答
1

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 是使用 Unix 时间戳的 Windows InstallDate,但从技术上讲它是错误的 date

让我解释;

UNIX 时间戳的定义与时区无关。UNIX 时间戳定义为自 1970 年 1 月 1 日星期四 00:00:00 协调世界时 (UTC) 以来经过的秒数,不包括闰秒。

换句话说,如果您已将计算机安装在华盛顿州西雅图市并搬到纽约州纽约市,则 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 将为您提供纽约时区的日期,而不是 Windows 所在的西雅图时区原装安装。这是错误的日期,它不存储最初安装计算机的时区。

解决方案

  1. 将您的计算机时区(右键单击您的时钟->调整日期/时间->调整时区)更改为安装 Windows 或首次打开的时区。然后运行 ​​systeminfo.exe find /i "Original Install Date"
  2. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 但您已添加安装 Windows 或首次打开的时区。
于 2017-04-07T23:51:13.140 回答