如何findWindows的安装时间和date?

这可能听起来像一个疯狂的问题,但我怎么能找出(希望通过一个API /registry项)Windows的安装时间和date?

到目前为止我所能想到的最好的办法是查看C:\ Windows中的各种文件并尝试猜测…但这不是一个好的解决scheme。

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 

它是1970年1月1日以来的秒数。

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

另一个问题是“ 代码挑战 ”:这里有一些源代码可执行文件来回答这个问题,但是它们并不完整。
你会发现任何人都可以在他/她的计算机上执行一个VB脚本,预期的结果?


 systeminfo|find /i "original" 

会给你实际的date…不是秒数;)
正如Sammy 所说 , find /i "install"给出的比您需要的更多。
这只适用于语言环境是英语的情况:它需要与语言匹配。
对于瑞典人来说,这是德语的“ ursprungligt ”和“ ursprüngliches ”。


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

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

通过使用WMI( Windows Management Instrumentation )

如果您不使用WMI,则必须阅读然后转换registry值:

 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" 

本文的其余部分为您提供了访问相同信息的其他方法。 select你的毒药;)


在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 

在Autoit (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; 

打开命令提示符,input“ systeminfo ”并按回车。 您的系统可能需要几分钟才能获取信息。 在结果页面中,您可以find一个名为“系统安装date”的条目。 这是Windows安装的date。 这个过程在XP,Win7和win8上都能正常工作。

如何找出Windows 7安装date/时间:

只是看到这个…

  • 开始>inputCMD
  • inputsysteminfo

而已; 那么你可以看到你的机器的所有信息; 非常简单的方法

曾经想找出你的电脑的操作系统安装date? 下面是一个快速简单的方法来找出您的PC操作系统安装(或上次升级)的date和时间。

打开命令提示符(开始 – >运行 – >input命令 – >命中input)并运行以下命令

systeminfo | 找/我“安装date”

几秒钟后,您将看到安装date

在Powershell中运行命令:

 systeminfo | Select-String "Install Date:" 

我们在这里有足够的答案,但我想把我的5美分。

我在10/30/2015 10月10/30/2015日安装了Windows 10,并在04/14/2017上安装了Creators Update,并安装了以前的版本。 在我之前的答案中描述的所有方法都会给我创build者更新安装的date。

原始安装日期

我设法find几个文件的创builddate与我的Windows 10的实际(干净)安装date相匹配:

  • C:\Windows

很少C:\ Windows文件

  • C:\

很少C:\文件

使用speccy。 它显示操作系统部分中的安装date。 http://www.piriform.com/speccy

您还可以检查系统驱动器中的任何文件夹,如“窗口”和“程序文件”。 右键单击文件夹,单击属性并在常规选项卡下查看文件夹的创builddate。

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate和systeminfo.exe产生错误的date

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

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

但是您可以从WMI Win32_Registry类获取时区信息。

InstallDate采用UTC格式(yyyymmddHHMMSS.xxxxxx±UUU),根据Microsoft TechNet 文章 “使用WMI进行date和时间处理”,其中尤以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); } 

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

Windows 10操作系统还有另一个registry子项,这个在SYSTEMconfiguration单元文件中:

 > "\Setup\Source OS." 

此处的安装date信息是原始计算机操作系统安装date/时间。 它也告诉你什么时候开始更新,即

  "\Setup\Source OS (Updated on xxxxxx)." 

这当然不是当更新结束时,用户可以selectclosures,而不是在提示时重新启动等等。

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

 > "\Setup\Source OS (Updated on xxxxxx)" 

将反映开始更新的date/时间。