如何找到 Windows 的安装时间和日期?

这可能听起来有点疯狂的问题,但我怎样才能找到(希望通过 API/注册表项) Windows 的安装时间和日期?

到目前为止,我能想到的最好的办法就是在 C: Windows 中查看各种文件,然后尝试猜测... ... 但这并不是一个很好的解决方案。

328098 次浏览

regedit.exe中,转到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate

这是1970年1月1日以来的秒数。(注意: 对于 Windows10,这个日期将是最后一次安装功能更新的日期,而不是最初的安装日期。)

要将该数字转换为可读的日期/时间,只需将十进制值粘贴到此 Unix 时间转换在线工具的字段“ UNIX TimeStamp:”中。

TLDR

重要提示 如果 Windows 是使用磁盘映像的 「已安装」,则两种方法都会失败。

方法1 在 Windows 没有升级到新的主版本(例如 Windows 10到 Windows 11)的情况下可以工作。执行命令 systeminfo并查找以“原始安装日期”开头的行(或者类似于本地语言中的行)。通过查询 WMI 和查看注册表,您可以得到相同的版本。如果 Windows 被升级到一个新的主版本,这个方法很不幸地给你一个新的主版本的安装日期。下面是一个通过运行 PowerShell 中的 systeminfo 来检查版本的例子:

systeminfo | sls "original"

方法2 即使在重大更新之后,这似乎也能正常工作。您可以通过检查文件 system.ini的创建时间来获得安装日期,这个文件似乎没有被触及。例如使用 PowerShell:

 (Get-Item "C:\Windows\system.ini").CreationTime

细节

另一个问题符合“ 译自: 美国《科学》杂志网站(http://stackoverflow. com/questions/172184)”: 这里有一些源代码可执行文件来回答这个问题,但它们并不完整。 你会找到一个 VBScript,任何人都可以执行在他/她的计算机上,与预期的结果?


systeminfo|find /i "original"

会给你实际的日期... ... 而不是秒数;)

但是(警告) ,如 2021年的评论萨尔曼 A自动马提克所指出的

如果 Windows 被更新到一个新版本,这似乎给 重新安装 Windows 的日期


作为 山姆 评论find /i "install"提供比你需要的更多。 而且这只有在地区是英语的情况下才有效: 它需要与语言相匹配。 对瑞典语来说,这是“ ursprungligt”,对德语来说是“ ursprüngliches”。

Andy Gauge 在 评论中提出:

删去5个字符

systeminfo|find "Original"

在 Windows PowerShell脚本中,您只需键入:

PS > $os = get-wmiobject win32_operatingsystem
PS > $os.ConvertToDateTime($os.InstallDate) -f "MM/dd/yyyy"

使用 WMI (Windows 管理规范)

如果不使用 WMI,则必须读取然后转换注册表值:

PS > $path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
PS > $id = get-itemproperty -path $path -name InstallDate
PS > $d = get-date -year 1970 -month 1 -day 1 -hour 0 -minute 0 -second 0
## add to hours (GMT offset)
## to get the timezone offset programatically:
## get-date -f zz
PS > ($d.AddSeconds($id.InstallDate)).ToLocalTime().AddHours((get-date -f zz)) -f "MM/dd/yyyy"

这篇文章的其余部分为你提供了获取相同信息的其他途径


在 VB.Net 中,这会产生类似下面这样的效果:

Dim dtmInstallDate As DateTime
Dim oSearcher As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
For Each oMgmtObj As ManagementObject In oSearcher.Get
dtmInstallDate =
ManagementDateTimeConverter.ToDateTime(CStr(oMgmtO bj("InstallDate")))
Next

汽车人(一个 Windows 脚本语言)中,这将是:

;Windows Install Date
;
$readreg = RegRead("HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\", "InstallDate")
$sNewDate = _DateAdd( 's',$readreg, "1970/01/01 00:00:00")
MsgBox( 4096, "", "Date: " & $sNewDate )
Exit

在 Delphy 7中,这个数字是:

Function GetInstallDate: String;
Var
di: longint;
buf: Array [ 0..3 ] Of byte;
Begin
Result := 'Unknown';
With TRegistry.Create Do
Begin
RootKey := HKEY_LOCAL_MACHINE;
LazyWrite := True;
OpenKey ( '\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False );
di := readbinarydata ( 'InstallDate', buf, sizeof ( buf ) );
//    Result := DateTimeToStr ( FileDateToDateTime ( buf [ 0 ] + buf [ 1 ] * 256 + buf [ 2 ] * 65535 + buf [ 3 ] * 16777216 ) );
showMessage(inttostr(di));
Free;
End;
End;

作为替代方案,海岸提议 在评论中:

由于 system.ini-file在典型的 Windows 部署中保持不变,所以实际上可以通过使用以下一行程序得到安装日期:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime

使用 speccy。它在操作系统部分显示安装日期。 Http://www.piriform.com/speccy

如何找出 Windows7的安装日期/时间:

看看这个。

  • 开始 > 输入 CMD
  • 输入 system info

就是这样; ,然后你就可以看到关于你的机器的所有信息; ,非常简单的方法

您还可以检查系统驱动器中的任何文件夹,如“ windows”和“ program files”。右键单击该文件夹,单击属性并在常规选项卡下检查该文件夹创建的日期。

打开命令提示符,键入“ Systeminfo”,然后按回车键。您的系统可能需要几分钟才能获得信息。在结果页面中,您可以找到一个名为“系统安装日期”的条目。这是安装窗口的日期。这个过程适用于 XP,Win7,也适用于 win8。

你是否曾经想知道你的电脑的操作系统安装日期?这里有一个快速简单的方法来找出您的 PC 操作系统安装(或最近一次升级)的日期和时间。

打开命令提示符(start-> run-> type cmd-> hit enter)并运行以下命令

Systeminfo | find/i“ install date”

几秒钟后,您将看到安装日期

在 Powershell,运行命令:

systeminfo | Select-String "Install Date:"

在 RunCommand 中 写入 "MSINFO32"并按回车键 它将显示所有与系统相关的信息

MicrosoftWindowsNT CurrentVersion InstallDate 和 systeminfo.exe 生成 错误的日期

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

换句话说,如果你已经在西雅图安装了你的电脑,并搬到了纽约,那么 HKLM 软件 Microsoft Windows NT CurrentVersion InstallDate 将不会反映这一点。这是 错误的日期它不存储计算机最初安装的时区。

这个效果就是 如果在运行这个程序时更改了时区,日期就会错误。您必须重新运行可执行文件,以便它能够考虑到时区的变化。

但是您可以从 WMI Win32 _ Registry类获得时区信息。

InstallDate 采用 UTC 格式(yyyymmddHHMMSS.xxxxx ± UUU) ,TechNet 为 文章“使用 WMI 处理日期和时间”,其中 xxxxxx 为毫秒,± UUU 为与格林尼治平时不同的分钟数。

 private static string RegistryInstallDate()
{


DateTime InstallDate = new DateTime(1970, 1, 1, 0, 0, 0);  //NOT a unix timestamp 99% of online solutions incorrect identify this as!!!!
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Registry");


foreach (ManagementObject wmi_Windows in searcher.Get())
{
try
{
///CultureInfo ci = CultureInfo.InvariantCulture;
string installdate = wmi_Windows["InstallDate"].ToString();


//InstallDate is in the UTC format (yyyymmddHHMMSS.xxxxxx±UUU) where critically
//
// xxxxxx is milliseconds and
// ±UUU   is number of minutes different from Greenwich Mean Time.


if (installdate.Length==25)
{
string yyyymmddHHMMSS = installdate.Split('.')[0];
string xxxxxxsUUU = installdate.Split('.')[1];      //±=s for sign


int year  = int.Parse(yyyymmddHHMMSS.Substring(0, 4));
int month = int.Parse(yyyymmddHHMMSS.Substring(4, 2));
int date  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2, 2));
int hour  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2, 2));
int mins  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2,  2));
int secs  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2 + 2, 2));
int msecs = int.Parse(xxxxxxsUUU.Substring(0, 6));


double UTCoffsetinMins = double.Parse(xxxxxxsUUU.Substring(6, 4));
TimeSpan UTCoffset = TimeSpan.FromMinutes(UTCoffsetinMins);


InstallDate = new DateTime(year, month, date, hour, mins, secs, msecs) + UTCoffset;


}
break;
}
catch (Exception)
{
InstallDate = DateTime.Now;
}
}
return String.Format("{0:ddd d-MMM-yyyy h:mm:ss tt}", InstallDate);
}

我们已经有了足够的答案,但是我想把我的5分钱。

我已经在 10/30/2015上安装了 Windows10,在我以前的安装之上在 04/14/2017上安装了 Creators Update。在我之前的答案中描述的所有方法都给了我创建者更新安装的日期。

Original Install Date

我设法找到了几个文件的创建日期与我的 Windows10的真实(干净)安装日期相匹配:

  • C:\Windows

Few C:\Windows files

  • C:\

Few C:\ files


顺便说一下,要获得 C: 和 C: windows 中最老的10个(通过创建)文件,一个简单的方法是在管理 Powershell 会话上运行这两个命令:

dir -Force C:\ | sort -Property creationtime  | select -Property name, creationtime -First 10
dir -Force C:\windows | sort -Property creationtime  | select -Property name, creationtime -First 10

Windows10操作系统还有另一个注册表子项,它位于 SYSTEM hive 文件中:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

此处的安装日期信息是原始计算机操作系统的安装日期/时间。它还会告诉你更新何时开始

 Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)."

这当然可能不是当更新结束时,用户可以选择关闭,而不是在提示时重新启动,等等。.

更新实际上可以在不同的一天完成,并且

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)"

将反映它开始更新的日期/时间。

WindowsKey + R并输入 cmd

在命令窗口中键入:

systeminfo | find /i "Original"

(对于较旧版本的视窗,请键入所有大写字母“ ORIGINAL”)。

我发现 c: pagefile.sys 的创建日期在大多数情况下非常可靠。使用这个命令可以很容易地获得它(假设 Windows 安装在 C: 上) :

dir /as /t:c c:\pagefile.sys

“/as”指定“ system files”,否则将找不到它。“/t: c”设置显示“ create”的时间字段。

用 WMIC 确定 Windows 安装日期

Wmic os 安装完毕

您可以简单地检查 Windows 文件夹的创建日期(右键单击它并检查属性) :)

你可以用 PowerShell 做到这一点:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\' -Name InstallDate |
Select-Object -Property @{n='InstallDate';e={[DateTime]::new(1970,1,1,0,0,0,0,'UTC').AddSeconds($_.InstallDate).ToLocalTime()}}

试试这个 powershell 命令:

Get-ChildItem -Path HKLM:\System\Setup\Source* |
ForEach-Object {Get-ItemProperty -Path Registry::$_} |
Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} |
Sort-Object "Install Date"

来自 PowerShell 的非常简单的方法:

(Get-CimInstance -Class Win32_OperatingSystem).InstallDate

摘自: https://www.sysadmit.com/2019/10/windows-cuando-fue-instalado.html

在尝试了各种方法之后,我认为系统卷的 NTFS 卷创建时间可能是最好的代理。虽然有工具可以检查这一点(参见 这个链接) ,但我想要一个没有附加实用工具的方法。我确定了 “ C: 系统容量信息”的创建日期,它似乎在不同的情况下检验。

PowerShell 的一句话就是:

([DateTime](Get-Item -Force 'C:\System Volume Information\').CreationTime).ToString('MM/dd/yyyy')