如何使用 C# 获取 Windows 的原始安装日期?
问问题
5529 次
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 所在的西雅图时区原装安装。这是错误的日期,它不存储最初安装计算机的时区。
解决方案
- 将您的计算机时区(右键单击您的时钟->调整日期/时间->调整时区)更改为安装 Windows 或首次打开的时区。然后运行 systeminfo.exe find /i "Original Install Date"
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 但您已添加安装 Windows 或首次打开的时区。
于 2017-04-07T23:51:13.140 回答