De acordo com essa referência , você tem várias maneiras de fazer isso, basta escolher aquela que você ama mais:
Como determinar a data de instalação do Windows com e sem o PowerShell
Systeminfo
A ferramenta systeminfo exibe muitas informações interessantes sobre
o computador e o sistema operacional, entre eles a data de instalação.
Aqui está um exemplo de saída:
Host Name: WIN7
OS Name: Microsoft Windows 7 Enterprise
OS Version: 6.1.7600 N/A Build 7600
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Original Install Date: 9/17/2009, 3:58:54 PM <==============
System Boot Time: 9/24/2009, 10:34:34 AM
...
WMI
A data de instalação é armazenada na propriedade InstallDate
da classe WMI em Win32_OperatingSystem
. Sem conversão, teríamos uma string como
"20090917155854.000000+120"
.
PS C:\> ([WMI]'').ConvertToDateTime((Get-WmiObject Win32_OperatingSystem).InstallDate)
Thursday, September 17, 2009 3:58:54 PM
Registro
A data de instalação é armazenada no valor do registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
como horário do UNIX (valor de 32 bits contendo o número de segundos desde 1/1/1970).
PS C:\> [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($(get-itemproperty 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion').InstallDate))
Thursday, September 17, 2009 3:58:54 PM
O que não funciona
A primeira vez que tive a ideia de consultar o tempo de criação do
Pasta do Windows. Isso não funciona porque, começando com o Vista,
o processo de configuração é baseado em imagem.
A única coisa que podemos aprender com a consulta da data de criação do
A pasta do Windows é quando a imagem de instalação foi criada pela Microsoft.
PS C:\> (Get-Item "$env:windir").creationtime
Tuesday, July 14, 2009 4:37:05 AM
Minha segunda ideia foi usar a data de criação de um arquivo ou pasta criada
logo após a instalação. Aqui está como eu procurei um provável candidato:
PS C:\> gci c: -force | where {$_.creationtime -lt "09.19.2009" -and
$_.creationtime -gt "09.16.2009"} |
select fullname,creationtime | sort creationtime
FullName CreationTime
-------- ------------
C:\Recovery 9/17/2009 3:58:50 PM
C:\temp 9/17/2009 10:02:46 PM
C:\System Volume Information 9/18/2009 12:43:30 AM
C:\hiberfil.sys 9/18/2009 12:43:30 AM
C:\pagefile.sys 9/18/2009 12:43:32 AM
Destes resultados, somente a pasta "Recuperação" é praticamente idêntica à data de instalação "oficial" registrada pelo Windows. Mas usar esse método parece muito frágil para uso em produção.
Outra tentativa falhada é usar a data da entrada de registro de evento mais antiga, como pode ser visto na captura de tela a seguir: