我可以使用C#获取Windows的原始安装日期吗?

时间:2012-06-21 07:30:15

标签: c#

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

2 个答案:

答案 0 :(得分:9)

来自this website,使用注册表而不是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;
}

答案 1 :(得分:1)

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

让我解释一下;

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

换句话说,如果你已经在西雅图,华盛顿安装了你的计算机,并搬到纽约纽约,那么HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate会给你纽约时区的日期,而不是西雅图时区Windows是原始安装的。它是错误的日期,它不会存储最初安装计算机的时区。

<强>解决方案

  1. 将您的计算机时区(右键单击您的时钟 - &gt;调整日期/时间 - >;调整时区)更改为安装Windows或首次打开的时区。然后运行systeminfo.exe find / i&#34;原始安装日期&#34;
  2. HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate,但您已添加安装Windows的时区,或首次启用。