如何使用C#获取Windows的原始安装日期?
答案 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是原始安装的。它是错误的日期,它不会存储最初安装计算机的时区。
<强>解决方案强>