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

我可以使用C#获取Windows的原始安装日期吗?,c#,C#,如何使用C#?而不是WMI(未测试)从注册表获取Windows的原始安装日期: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate是使用Unix时间戳的Windows InstallDate,但从技术上讲,它是错误的日期 让我解释一下 UNIX时间戳的名称与时区无关。UNIX时间戳定义为自1970年1月1日星期四00:00:00协调世界时(UTC)以来经过的秒数,不包括闰秒 换句话说,如果您在华盛顿州西雅图安装了计算机,并搬

如何使用C#?

而不是WMI(未测试)从注册表获取Windows的原始安装日期:


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

让我解释一下

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

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

解决方案

  • 将计算机时区(右键单击时钟->调整日期/时间->调整时区)更改为windows安装或首次打开的时区。然后运行systeminfo.exe查找/i“原始安装日期”
  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate,但您已添加安装或首次打开Windows的时区

  • 之前有人问过,请只在这个网站上搜索!也许就像Windows folderYes的创建日期一样,这是一个直接复制品。在此处查看您的问题和答案:很抱歉没有看到前面的问题。:)windows/程序文件/用户文件夹的创建日期不是安装日期…我的计算机是2011年安装的,文件夹是在哪里创建的2009@BillGim:regkey缺少一些反斜杠。当前版本应执行以下操作:trick@Nuffin谢谢-我说的是“未经测试”;-)DateTime构造函数缺少DateTimeKind.Utc标志,无法生成与Microsoft的systeminfo.exe命令行工具生成/表示的日期完全相同的日期。我在原始答案中添加了修改。
    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;
    }