Answers:
在regedit.exe
转到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
以自1970年1月1日以来的秒数表示。(注意:对于Windows 10,该日期将是最后一次更新功能的安装日期,而不是原始安装日期。)
要将该数字转换为可读的日期/时间,只需将十进制值粘贴到此Unix时间转换在线工具的 “ UNIX TimeStamp:”字段中。
对于“ 代码挑战 ” 而言,另一个容易理解的问题是:这里有一些源代码可执行文件可以回答该问题,但它们并不完整。
您是否会找到任何人都可以在他/她的计算机上执行的vb脚本,并且效果理想?
systeminfo|find /i "original"
会给你的实际日期...不是秒数;)
作为萨米 的意见,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管理规范)
如果不使用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
在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;
由于
system.ini-file
在典型的Windows部署中保持不变,因此您实际上可以使用以下oneliner获取安装日期:(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
systeminfo|find /i "original"
仅过滤“原始安装日期”。如果使用“安装”作为字符串,则将获得比您需要更多的信息。另外,如果语言环境不是英语,则可能无法使用。它需要匹配语言。对于瑞典语,德语为“ ursprungligt”和“ursprüngliches”。
我们在这里有足够的答案,但我想投入5美分。
我在先前的安装之上安装了Windows 10,10/30/2015
并安装了Creators Update 04/14/2017
。我的答案中描述的所有方法都为我提供了创建者更新的安装日期。
我设法找到了几个与Windows 10的实际(干净)安装日期相匹配的文件创建日期:
C:\Windows
C:\
system.ini
在我的Windows 7和2008计算机上,这个日期毫无意义,似乎是在安装时复制了从安装源创建的时间戳。C:\pagefile.sys
具有正确的时间戳。
打开命令提示符,键入“ systeminfo ”,然后按Enter。您的系统可能需要几分钟来获取信息。在结果页面中,您将找到一个条目“系统安装日期”。那是Windows安装的日期。此过程适用于XP,Win7以及win8。
是否曾经想知道您PC的操作系统安装日期?这是找出您的PC操作系统(或上次升级)安装日期和时间的快速简便方法。
打开命令提示符(开始->运行->输入cmd->按下Enter)并运行以下命令
systeminfo | 查找/ i“安装日期”
几秒钟后,您将看到安装日期
Windows 10操作系统还有另一个注册表子项,它位于SYSTEM配置单元文件中:
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)"
将反映开始更新的日期/时间。
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate和systeminfo.exe生成错误的日期。
UNIX时间戳的定义与时区无关。UNIX时间戳定义为自1970年1月1日(星期四)协调世界时(UTC)00:00:00起经过的秒数,不计leap秒。
换句话说,如果您在华盛顿州西雅图市安装了计算机并将其移至纽约,则HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate不会反映此情况。这是错误的日期,它不会存储在电脑的最初安装时区。
这样做的效果是,如果在运行此程序时更改时区,则日期将是错误的。您必须重新运行该可执行文件,以使其能够解决时区变化。
但是您可以从WMI Win32_Registry类获取时区信息。
根据Microsoft TechNet 文章 “使用WMI处理日期和时间”,InstallDate采用UTC格式(yyyymmddHHMMSS.xxxxxx±UUU),其中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);
}
我发现c:\ pagefile.sys的创建日期在大多数情况下可以非常可靠。可以使用以下命令轻松获得它(假设Windows安装在C:上):
dir /as /t:c c:\pagefile.sys
“ / as”指定“系统文件”,否则将找不到。“ / t:c”将时间字段设置为显示“创建”。
使用speccy。它在“操作系统”部分显示安装日期。 http://www.piriform.com/speccy
您还可以检查系统驱动器中的任何文件夹,例如“ windows”和“ program files”。右键单击该文件夹,单击属性,然后在常规选项卡下检查创建文件夹的日期。
.WIM
创建日期是Microsoft创建映像的日期,而不是操作系统安装在特定计算机上的日期。
使用PowerShell的非常简单的方法:
(Get-CimInstance -Class Win32_OperatingSystem).InstallDate
摘自:https : //www.sysadmit.com/2019/10/windows-cuando-fue-instalado.html
按WindowsKey+ R并输入cmd
在命令窗口中,输入:
systeminfo | find /i "Original"
(对于旧版Windows,请在所有大写字母中键入“ ORIGINAL”)。
您可以简单地检查Windows文件夹的创建日期(右键单击它并检查属性):)
试试这个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"