Como encontro a data e hora da instalação do Windows?

134

Isso pode parecer um pouco de uma pergunta maluca, mas como posso descobrir (espero por meio de uma chave de API / registro) a hora e a data de instalação do Windows?

O melhor que posso apresentar até agora é examinar vários arquivos em C: \ Windows e tentar adivinhar ... mas essa não é exatamente uma solução agradável.

Gnu grátis
fonte

Respostas:

90

Em regedit.exeir para:

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

É dado como o número de segundos desde 1º de janeiro de 1970. (Nota: para Windows 10, esta data será quando a última atualização de recurso foi instalada, não a data original da instalação).

Para converter esse número em uma data / hora legível, cole o valor decimal no campo "UNIX TimeStamp:" desta ferramenta on-line de conversão de horas Unix .

Tommy
fonte
3
Isso é ótimo, existe um lugar especial em que você foi buscar essas informações ou você sabia disso?
Free Wildebeest
5
Funciona muito bem, exceto se o Windows foi instalado usando uma imagem de disco. Existe uma maneira de verificar a criação do perfil dos usuários para resolver esse problema?
Bernard Vander Beken
8
Não funciona reflete a mais recente servicepack / atualização data de instalação (ea versão atual, não a versão original instalar tempo.
user3800527
2
Eu acho que dá a última data de atualização do Windows, em vez da data de instalação do sistema.
Tharindu Sathischandra
minha instalação do windows 7 não está mostrando InstallDate nesse local de registro, seu SP1.
user734028
175

Outra questão elegível para um ' desafio de código ': aqui estão alguns executáveis ​​de código-fonte para responder ao problema, mas eles não estão completos.
Você encontrará um script vb que qualquer pessoa possa executar em seu computador, com o resultado esperado?


systeminfo|find /i "original" 

daria a data real ... não o número de segundos;)
Como comenta Sammy , dá mais do que você precisa. E isso só funciona se o código do idioma for inglês: ele precisa corresponder ao idioma. Para sueco, isso seria " " e " " para alemão.find /i "install"

ursprungligtursprüngliches


No script do Windows PowerShell , você pode apenas digitar:

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

Usando o WMI ( Windows Management Instrumentation )

Se você não usar o WMI, deverá ler e converter o valor do registro:

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"

O restante desta postagem oferece outras maneiras de acessar as mesmas informações. Escolha o seu veneno ;)


No VB.Net, isso daria algo como:

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

No Autoit (uma linguagem de script do Windows), isso seria:

;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

No Delphy 7, isso seria como:

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;

Como alternativa, a CoastN propõe nos comentários :

Como system.ini-filepermanece inalterado em uma implantação típica do Windows, é possível obter a data de instalação usando o seguinte oneliner:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VonC
fonte
2
Eu descobri o porquê. É porque meu Windows não está em inglês. :)
Pedro77
3
Use systeminfo|find /i "original"para filtrar apenas a "Data original da instalação". Se você usar "install" como string, obterá mais informações do que precisa. Além disso, se o código do idioma não for inglês, provavelmente isso não funcionará. Ele precisa corresponder ao idioma. Para o sueco, isso seria "ursprungligt" e "ursprüngliches" para o alemão.
Samir
1
Para mim, systeminfo | find / i "original" retornou 30/06/2017, que deve ter sido uma atualização do Windows, já que eu tenho a máquina há cerca de 4 anos.
Tim
1
Acabei de passar por isso, mas com 245 hotfixes por padrão, a janela CMD não tinha linhas verticais suficientes para exibir toda a saída 'systeinfo'. Estava coçando minha cabeça por um minuto. Siga-o para corrigi-lo: stackoverflow.com/questions/1740876/…
asdf30
1
Isso mostra que eu instalei o sistema há duas semanas, mas na verdade foi um ano ou dois. Parece que esta é uma data da última grande atualização.
hans
48

Temos respostas suficientes aqui, mas quero colocar meus 5 centavos.

Eu tenho o Windows 10 instalado 10/30/2015e a Atualização de criadores instalada 04/14/2017em cima da minha instalação anterior. Todos os métodos descritos nas respostas anteriores às minhas fornecem a data da instalação da Atualização dos criadores.

Data de instalação original

Consegui encontrar a data de criação de alguns arquivos que corresponde à data de instalação real (limpa) do meu Windows 10:

  • no C:\Windows

Poucos arquivos C: \ Windows

  • no C:\

Poucos arquivos C: \

Nikolay Kostov
fonte
7
Melhor do que as outras respostas, mas e as implantações de imagem?
user3800527
7
Esta é definitivamente mais próxima da resposta correta; as outras soluções não funcionam mais com as atualizações do Windows 10. No entanto, nenhum dos 5 arquivos / pastas listados aqui tinha a data correta no meu sistema (alguns foram mais tarde e outros mais antigos). No entanto, encontrei 1 arquivo e 2 pastas com a data correta no meu sistema: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ symbols \ e C: \ Windows \ CSC \. Portanto, se você souber quando foi aproximadamente, vá para C: \ Windows \, ​​mostre os arquivos do sistema, classifique por data e encontre algo que pareça correto.
27630 Matt
Para o meu system.ini do Windows 10, o BOOTNXT e o bootmgr tiveram a data correta. Win.ini e $ Recycle.Bin tiveram datas mais recentes.
Keith
A data em que system.ininão fazia sentido nas minhas máquinas Windows 7 e 2008, parece que o registro de data e hora criado a partir das fontes de instalação está sendo copiado na instalação. C:\pagefile.systinha o carimbo de data / hora correto.
Daniel Sokolowski
38

Abra o prompt de comando, digite " systeminfo " e pressione enter. Seu sistema pode levar alguns minutos para obter as informações. Na página de resultados, você encontrará uma entrada como "Data de instalação do sistema". Essa é a data da instalação do Windows. Esse processo funciona no XP, Win7 e também no win8.

diptangshu sengupta
fonte
1
Observe que você precisa ser administrador para fazer isso.
Barrie leitor
2
No Windows 7 o que dá uma entrada "Original Data de Instalação", que por algum motivo é 11.1.2002, o que claramente não é correto :(
silverchair
18

Como descobrir a data / hora da instalação do Windows 7:

apenas veja isso ...

  • Iniciar> digite CMD
  • digite systeminfo

é isso aí; então você pode ver todas as informações sobre sua máquina; método muito simples

ani alexander
fonte
13

Sempre quis descobrir a data de instalação do sistema operacional do seu PC? Aqui está uma maneira rápida e fácil de descobrir a data e hora em que o sistema operacional do seu PC foi instalado (ou foi atualizado pela última vez).

Abra o prompt de comando (iniciar-> executar -> digite cmd-> pressione enter) e execute o seguinte comando

informações do sistema | encontre / i "data de instalação"

Em alguns segundos, você verá a data de instalação

Robin
fonte
3
até você instalar um service pack principal, ele reflete essa data
user3800527 29/01
12

No Powershell, execute o comando:

systeminfo | Select-String "Install Date:"
user3827180
fonte
2
Select-String requer a versão do Windows PowerShell> 3.0 melhor aproveitamentofind /i
sactiw
5

O sistema operacional Windows 10 tem ainda outra subchave do registro, essa no arquivo de seção SYSTEM:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

As informações da data de instalação aqui são a data / hora da instalação do sistema operacional do computador original. Também informa quando a atualização foi iniciada, ou seja,

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

Obviamente, isso pode não acontecer quando a atualização termina, o usuário pode optar por desligar em vez de reiniciar quando solicitado, etc.

A atualização pode ser concluída em um dia diferente e

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

refletirá a data / hora em que iniciou a atualização.

Amit Gupta
fonte
4

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ InstallDate e systeminfo.exe produz a data errada .

A definição do registro de data e hora do UNIX é independente do fuso horário. O registro de data e hora do UNIX é definido como o número de segundos decorridos desde 00:00:00 Hora Universal Coordenada (UTC), quinta-feira, 1 de janeiro de 1970 e sem contar os segundos bissextos.

Em outras palavras, se você instalou o computador em Seattle, WA e se mudou para Nova York, NY, o HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate não refletirá isso. É a data errada , não armazena o fuso horário no qual o computador foi instalado inicialmente.

O efeito disso é que, se você alterar o fuso horário durante a execução deste programa, a data estará errada. Você precisa executar novamente o executável para que ele considere a alteração do fuso horário.

Mas você pode obter as informações de fuso horário da classe WMI Win32_Registry .

InstallDate está no formato UTC (aaaammddHHMMSS.xxxxxx ± UUU) conforme o artigo do Microsoft TechNet "Trabalhando com datas e horários usando WMI", onde notavelmente xxxxxx é milissegundos e ± UUU é o número de minutos diferente do horário de Greenwich.

 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);      
    }
Markus
fonte
A definição de um registro de data e hora do UNIX inclui um fuso horário, UTC. Se um computador estiver instalado às 18:00, horário de Nova York e às 15:00, horário de Seattle no mesmo dia, eles terão o mesmo registro de data e hora do UNIX, porque foram instalados no mesmo horário UTC. Se você instalou em 1º de abril de 2018 às 15:00 em Seattle e se mudou para Nova York e depois converte do UTC para o horário local, será exibido em 1º de abril de 2018 às 18:00 e estará correto, porque eram 6 : 00:00 em Nova York quando você instalou em Seattle.
JLA
Obrigado jla, eu não estava claro no meu post. Quando você altera o fuso horário rapidamente enquanto o programa está em execução, a alteração do fuso horário não será refletida. Você precisa reiniciar o programa para que o fuso horário entre em vigor. Esse é o mesmo comportamento do PowerShell.
28418 Markus
O InstallDate retorna a hora local com o fuso horário atual aplicado e também o fuso horário no formulário + XXX. Quando o fuso horário muda, a data da instalação muda e também o fuso horário. Se a data de instalação no UTC for 2000-01-01T12: 00: 00Z. O InstallDate é 20000101120000.000000 + 000. Defina o fuso horário como UTC + 5 e ele se torna 20000101170000.000000 + 300. Ao usar o código acima, o fuso horário é adicionado duas vezes. Para obter a data UTC, a linha "InstallDate =" deve ser alterada para: InstallDate = new DateTime (ano, mês, data, hora, minutos, segundos, msseg, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Acho que a data de criação de c: \ pagefile.sys pode ser bastante confiável na maioria dos casos. Pode ser obtido facilmente usando este comando (assumindo que o Windows esteja instalado em C :):

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

O '/ as' especifica 'arquivos do sistema', caso contrário, não será encontrado. O '/ t: c' define o campo de tempo para exibir 'criação'.

MoonDogg
fonte
1
Isso daria a data de criação do arquivo de paginação, que não tem nenhuma relação com a data de instalação do próprio sistema operacional. Ele pode ser recriado por vários motivos e até adulterado, se você realmente quiser. Esse não é um método confiável.
Alejandro
1
Não é 'totalmente independente', pois é criado durante a instalação inicial. Portanto, a menos que tenha sido intencionalmente recriado ou excluído em algum momento, na maioria dos casos, a data de criação será a mesma que a data de instalação inicial, pois persiste nas atualizações. Sim, não é 100% confiável, mas é rápido e fácil, e eu acho que preciso em muito mais casos do que não. Definitivamente mais do que muitas das respostas aqui.
MoonDogg
Você pode recriar esse arquivo a qualquer momento e, se o método não garantir o resultado certo 100% do tempo, ninguém poderá confiar nele.
Slava Murygin
2

Determinar a data de instalação do Windows com WMIC

wmic os obter installdate

Lko Jegue
fonte
1
Provavelmente, isso apenas lê a chave do Registro InstallDate e tem o mesmo problema; ele muda nas atualizações de compilação.
Anders
1

Use speccy. Ele mostra a data da instalação na seção Sistema operacional. http://www.piriform.com/speccy

Amin
fonte
1
Não é uma solução de programação. Se houver algum tipo de interface com a qual o Powershell (por exemplo) possa interagir, liste-o.
Tyler Montney
1

Você também pode verificar qualquer pasta na unidade do sistema, como "janelas" e "arquivos de programas". Clique com o botão direito do mouse na pasta, clique nas propriedades e verifique na guia geral a data em que a pasta foi criada.

Tekki
fonte
5
Embora válido - esta não é uma solução de programação
Matt Wilko
@ Matt Ele deu o algoritmo em Lenguaje Natural, então basta copiá-lo em um dispositivo humano! : D
Jonathan
3
Nas versões mais recentes do Windows, que usam instalação ( .WIMarquivos) com base em imagem , a data de criação é quando a Microsoft criou a imagem, não quando o sistema operacional foi instalado em uma máquina específica.
precisa saber é o seguinte
1

No RunCommand, escreva "MSINFO32"e pressione Enter. Ele mostrará todas as informações relacionadas ao sistema.

shailesh
fonte
Todas as informações, exceto o tempo de instalação. Windows 7 SP1.
Pavel Vlasov
0

Pressione WindowsKey+ Re digitecmd

Na janela de comando, digite:

systeminfo | find /i "Original"

(para versões mais antigas do Windows, digite "ORIGINAL" em letras maiúsculas).

abdullahjavaid86
fonte
Alguém sabe por que o voto negativo? Funcionou para mim, talvez não seja preciso por algum motivo? Talvez explique ao dar um voto
negativo
@russelrillema, o último service pack principal substitui essa data.
Don Tomato
Se você possui o Windows 10 v1809, vá para Configurações> Sistema> Sobre. Encontre a Especificação do Windows e você terá um campo com o nome "Instalar em". (Nota: Não tenho certeza se ele funciona em versões mais antigas do Windows)
abdullahjavaid86
0

Você pode simplesmente verificar a data de criação da Pasta do Windows (clique com o botão direito do mouse e verifique as propriedades) :)

farhad.kargaran
fonte
0

Você pode fazer isso com o 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()}}
Pedaços de bacon
fonte
0

Experimente este comando do 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"
Futur'Fusionneur
fonte
Quase verdadeiro e deve ser observado muito mais, pois isso leva em consideração as atualizações de compilação que alteram a chave em HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, mas é necessário que ambos sejam combinados, pois as chaves do SO de origem nem sequer estão presentes se um sistema nunca foi realmente atualizado (ainda) e também estaria faltando a data da última atualização de compilação
Syberdoor 10/10