¿Cómo encuentro la fecha y hora de instalación de Windows?

134

Esto puede sonar como una pregunta un poco loca, pero ¿cómo puedo averiguar (con suerte a través de una API / clave de registro) la fecha y hora de instalación de Windows?

Lo mejor que puedo encontrar hasta ahora es mirar varios archivos en C: \ Windows e intentar adivinar ... pero esa no es exactamente una buena solución.

Ñu libre
fuente

Respuestas:

90

En regedit.exeir a:

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

Se proporciona como la cantidad de segundos desde el 1 de enero de 1970. (Nota: para Windows 10, esta fecha será cuando se instaló la última actualización de características, no la fecha de instalación original).

Para convertir ese número en una fecha / hora legible, simplemente pegue el valor decimal en el campo "Marca de tiempo UNIX:" de esta herramienta en línea de conversión de tiempo Unix .

Tommy
fuente
3
Eso es genial, ¿hay un lugar especial al que fuiste para obtener esa información o simplemente lo sabías?
Wildebeest gratuito el
55
Funciona muy bien, excepto si Windows se instaló usando una imagen de disco. ¿Hay alguna forma de verificar la creación del perfil de los usuarios para resolver este problema?
Bernard Vander Beken
8
No funciona refleja la última fecha de instalación del paquete de servicio / actualización (por ejemplo, la versión ACTUAL, no el tiempo de instalación de la versión original.
user3800527
2
Creo que da la última fecha de actualización de Windows, en lugar de la fecha de instalación del sistema.
Tharindu Sathischandra
mi instalación de Windows 7 no muestra InstallDate en esa ubicación de registro, su SP1.
user734028
175

Otra pregunta elegible para un ' desafío de código ': aquí hay algunos ejecutables de código fuente para responder al problema, pero no están completos.
¿Encontrará un script vb que cualquiera pueda ejecutar en su computadora, con el resultado esperado?


systeminfo|find /i "original" 

le daría la fecha real ... no la cantidad de segundos;)
Como comenta Sammy , le da más de lo que necesita. Y esto solo funciona si la configuración regional es en inglés: debe coincidir con el idioma. Para sueco esto sería " " y " " para alemán.find /i "install"

ursprungligtursprüngliches


En el script de Windows PowerShell , puede escribir:

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

Mediante el uso de WMI ( Instrumental de administración de Windows )

Si no utiliza WMI, debe leer y luego convertir el valor del 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"

El resto de esta publicación le brinda otras formas de acceder a esa misma información. Elige tu veneno ;)


En VB.Net eso daría 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

En Autoit (un lenguaje de script de Windows), eso sería:

;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

En Delphy 7, eso sería 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, CoastN propone en los comentarios :

Como system.ini-filepermanece intacto en una implementación típica de Windows, en realidad puede obtener la fecha de instalación utilizando el siguiente oneliner:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VonC
fuente
2
Descubrí por qué. Es porque mi Windows no está en inglés. :)
Pedro77
3
Utilícelo systeminfo|find /i "original"para filtrar únicamente la "Fecha de instalación original". Si usa "instalar" como cadena, obtendrá más información de la que necesita. Además, si la configuración regional no es en inglés, entonces esto probablemente no funcionará. Necesita coincidir con el idioma. Para el sueco esto sería "ursprungligt" y "ursprüngliches" para el alemán.
Samir
1
Para mí, systeminfo | find / i "original" regresó el 30/06/2017, que tuvo que haber sido una actualización de Windows, ya que he tenido la máquina durante aproximadamente 4 años.
Tim
1
Acabo de pasar por esto, pero con 245 revisiones por defecto, la ventana CMD no tenía suficientes líneas verticales para mostrar toda la salida 'systeinfo'. Me estaba rascando la cabeza por un minuto. Seguimos esto para solucionarlo: stackoverflow.com/questions/1740876/…
asdf30
1
Muestra que instalé el sistema hace dos semanas, pero en realidad fue uno o dos años. Parece que esta es una fecha de la última gran actualización.
Hans
48

Tenemos suficientes respuestas aquí, pero quiero poner mis 5 centavos.

Tengo instalado Windows 10 10/30/2015y Creators Update instalado 04/14/2017además de mi instalación anterior. Todos los métodos descritos en las respuestas anteriores a la mía me dan la fecha de instalación de la Actualización de creadores.

Fecha de instalación original

He logrado encontrar la fecha de creación de algunos archivos que coincide con la fecha de instalación real (limpia) de mi Windows 10:

  • en C:\Windows

Pocos archivos C: \ Windows

  • en C:\

Pocos archivos C: \

Nikolay Kostov
fuente
77
Mejor que las otras respuestas, pero ¿qué hay de las implementaciones con imágenes?
user3800527
77
Esto definitivamente está más cerca de la respuesta correcta; Las otras soluciones ya no funcionan con las actualizaciones de Windows 10. Sin embargo, ninguno de los 5 archivos / carpetas enumerados aquí tenía la fecha correcta en mi sistema (algunos eran posteriores y otros eran realmente anteriores). Sin embargo, encontré 1 archivo y 2 carpetas con la fecha correcta en mi sistema: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ symbols \, y C: \ Windows \ CSC \. Entonces, si sabe cuándo fue aproximadamente, vaya a C: \ Windows \, ​​muestre los archivos del sistema, ordene por fecha y encuentre algo que se vea bien.
Matt Jacobi
Para mi Windows 10 system.ini, BOOTNXT y bootmgr tenían la fecha correcta. Win.ini & $ Recycle.Bin tenía fechas más nuevas.
Keith
La fecha system.inino tenía sentido en mis máquinas con Windows 7 y 2008, parece que la marca de tiempo creada de las fuentes de instalación se está copiando en la instalación. C:\pagefile.systenía la marca de tiempo correcta.
Daniel Sokolowski
38

Abra el símbolo del sistema, escriba " systeminfo " y presione Entrar. Su sistema puede tardar unos minutos en obtener la información. En la página de resultados encontrará una entrada como "Fecha de instalación del sistema". Esa es la fecha de instalación de Windows. Este proceso funciona en XP, Win7 y también en win8.

Diptangshu sengupta
fuente
1
Tenga en cuenta que debe ser administrador para hacer esto.
Barrie Reader
2
En Windows 7, esto proporciona una entrada de "Fecha de instalación original" que por alguna razón es 11.1.2002, que claramente no es correcta :(
silverchair
18

Cómo averiguar la fecha / hora de instalación de Windows 7:

solo ve esto ...

  • inicio> ingrese CMD
  • entrar en systeminfo

Eso es; entonces puede ver toda la información sobre su máquina; método muy simple

ani alexander
fuente
13

¿Alguna vez quiso saber la fecha de instalación del sistema operativo de su PC? Aquí hay una manera rápida y fácil de averiguar la fecha y hora en que se instaló (o se actualizó por última vez) el sistema operativo de su PC.

Abra el símbolo del sistema (inicio-> ejecutar -> escriba cmd-> presione enter) y ejecute el siguiente comando

systeminfo | buscar / i "fecha de instalación"

En unos segundos verá la fecha de instalación.

Robin
fuente
3
hasta que instale un paquete de servicio importante, entonces refleja esa fecha
usuario3800527
12

En Powershell, ejecute el comando:

systeminfo | Select-String "Install Date:"
usuario3827180
fuente
2
Select-String requiere Windows PowerShell versión> 3.0 mejor usofind /i
sactiw
5

El sistema operativo Windows 10 tiene otra subclave de registro, esta en el archivo de colmena SYSTEM:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

La información de la fecha de instalación aquí es la fecha / hora de instalación original del sistema operativo de la computadora. También le indica cuándo comenzó la actualización, es decir

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

Por supuesto, esto puede no ser cuando finaliza la actualización, el usuario puede optar por apagar en lugar de reiniciar cuando se le solicite, etc.

La actualización en realidad puede completarse en un día diferente, y

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

reflejará la fecha / hora en que comenzó la actualización.

Amit Gupta
fuente
4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate y systeminfo.exe produce la fecha incorrecta .

La definición de marca de tiempo UNIX es independiente de la zona horaria. La marca de tiempo de UNIX se define como el número de segundos que han transcurrido desde las 00:00:00 hora universal coordinada (UTC), jueves 1 de enero de 1970 y sin contar los segundos bisiestos.

En otras palabras, si instaló su computadora en Seattle, WA y se mudó a Nueva York, NY, HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate no reflejará esto. Es la fecha incorrecta , no almacena la zona horaria donde se instaló inicialmente la computadora.

El efecto de esto es que si cambia la zona horaria mientras ejecuta este programa, la fecha será incorrecta. Debe volver a ejecutar el ejecutable para que tenga en cuenta el cambio de zona horaria.

Pero puede obtener la información de zona horaria de la clase WMI Win32_Registry .

InstallDate está en formato UTC (aaaammddHHMMSS.xxxxxx ± UUU) según el artículo de Microsoft TechNet "Trabajar con fechas y horas usando WMI", donde xxxxxx es milisegundos y ± UUU es un número de minutos diferente del tiempo medio 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
fuente
La definición de una marca de tiempo UNIX incluye una zona horaria, UTC. Si se instala una computadora a las 6:00 p.m. hora de Nueva York y a las 3:00 p.m. hora de Seattle el mismo día, tendrán la misma marca de tiempo UNIX porque se instalaron a la misma hora UTC. Si instaló el 1 de abril de 2018 a las 3:00 p.m. en Seattle y se mudó a Nueva York y luego se convirtió de UTC a su hora local, dirá el 1 de abril de 2018 a las 6:00 p.m. y será correcto, ya que eran las 6 : 00 PM en Nueva York cuando lo instaló en Seattle.
jla
Gracias jla, no estaba claro en mi publicación. Cuando cambia la zona horaria sobre la marcha mientras el programa se está ejecutando, el cambio de la zona horaria no se reflejará. Debe reiniciar el programa para que la zona horaria surta efecto. Este es el mismo comportamiento que Powershell.
Markus
InstallDate devuelve la hora local con la zona horaria actual aplicada, y también la zona horaria en el formulario + XXX. Cuando cambia la zona horaria, cambia la fecha de instalación y también la zona horaria. Si la fecha de instalación en UTC fue 2000-01-01T12: 00: 00Z. InstallDate es 20000101120000.000000 + 000. Establezca la zona horaria en UTC + 5, y se convierte en 20000101170000.000000 + 300. Cuando se usa el código anterior, la zona horaria se agrega dos veces. Para obtener la fecha UTC, la línea "InstallDate =" debe cambiarse a: InstallDate = new DateTime (año, mes, fecha, hora, minutos, segundos, msecs, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Creo que la fecha de creación de c: \ pagefile.sys puede ser bastante confiable en la mayoría de los casos. Se puede obtener fácilmente con este comando (suponiendo que Windows esté instalado en C :):

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

El '/ as' especifica 'archivos de sistema', de lo contrario no se encontrará. '/ T: c' establece el campo de tiempo para mostrar 'creación'.

MoonDogg
fuente
1
Eso daría la fecha de creación del archivo de paginación, que no tiene ninguna relación con la fecha de instalación del sistema operativo. Puede recrearse por varias razones e incluso manipularse si realmente lo desea. Ese no es un método confiable.
Alejandro
1
No es "totalmente ajeno", ya que se crea durante la instalación inicial. Entonces, a menos que se haya recreado o eliminado intencionalmente en algún momento, en 'la mayoría de los casos' la fecha de creación será la misma que la fecha de instalación inicial, ya que persiste a través de las actualizaciones. Sí, no es 100% confiable, pero es rápido y fácil, y supongo que es preciso en muchos casos. Definitivamente más que muchas de las respuestas aquí.
MoonDogg
Puede volver a crear ese archivo en cualquier momento y si el método no garantiza el resultado correcto el 100% del tiempo, nadie puede confiar realmente en él.
Slava Murygin
2

Determine la fecha de instalación de Windows con WMIC

wmic os obtener installdate

Lko Jegue
fuente
1
Esto probablemente solo lea la clave de registro InstallDate y tenga el mismo problema; cambia en las actualizaciones de compilación.
Anders
1

Use speccy. Muestra la fecha de instalación en la sección Sistema operativo. http://www.piriform.com/speccy

Amin
fuente
1
No es una solución de programación. Si hay algún tipo de interfaz con la que Powershell (por ejemplo) puede interactuar, enumere.
Tyler Montney
1

También puede verificar la verificación de cualquier carpeta en la unidad del sistema, como "Windows" y "archivos de programa". Haga clic derecho en la carpeta, haga clic en las propiedades y verifique en la pestaña general la fecha en que se creó la carpeta.

Tekki
fuente
55
Aunque es válido, esta no es una solución de programación
Matt Wilko
@Matt Él te dio el algoritmo en Lenguaje Natural, ¡así que solo cópialo en un dispositivo humano! : D
Jonathan
3
En las versiones más recientes de Windows, que usan instalación ( .WIMarchivos) basada en imágenes, la fecha de creación es cuando Microsoft creó la imagen, no cuando el sistema operativo se instaló en una máquina en particular.
ctype.h
1

En RunCommand, escriba "MSINFO32"y presione enter. Mostrará toda la información relacionada con el sistema

shailesh
fuente
Toda la información excepto el tiempo de instalación. Windows 7 SP1.
Pavel Vlasov
0

Presione WindowsKey+ Re ingresecmd

En la ventana de comandos, escriba:

systeminfo | find /i "Original"

(para versiones anteriores de Windows, escriba "ORIGINAL" en mayúsculas).

abdullahjavaid86
fuente
Alguien sabe por qué el voto negativo? Funcionó para mí, ¿tal vez no sea exacto por alguna razón? Tal vez explique al dar un voto
negativo
@russelrillema el último paquete de servicio importante anula esta fecha.
Don Tomato
Si tiene Windows 10 v1809, vaya a Configuración> Sistema> Acerca de. Busque la especificación de Windows y allí tiene un campo con el nombre "Instalar en". (Nota: no estoy seguro si funciona en versiones anteriores de Windows)
abdullahjavaid86
0

Simplemente puede verificar la fecha de creación de la carpeta de Windows (haga clic derecho sobre ella y verifique las propiedades) :)

farhad.kargaran
fuente
0

Puede hacer esto con 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()}}
Pedacitos de tocino
fuente
0

Pruebe este comando de 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
fuente
Casi cierto y debe tenerse en cuenta mucho más, ya que esto tiene en cuenta las actualizaciones de compilación que alteran la clave en HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, pero uno necesita ambos combinados ya que las claves del sistema operativo de origen ni siquiera están presentes si un sistema nunca se actualizó (todavía) y también faltaría la fecha de la última actualización de compilación
Syberdoor