2008-10-04 7 views
89

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

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

Respuesta

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

Ésta se administra en el número de segundos desde el 1 de enero de 1970.

Para convertir ese número en una fecha legible/hora basta con pegar el valor decimal en el campo "marca de tiempo Unix:" de este Unix Time Conversion online tool .

+3

Eso es genial, ¿hay algún lugar especial al que fue para obtener esa información o simplemente lo sabía? –

+3

Funciona muy bien, excepto si Windows se instaló usando una imagen de disco. ¿Hay alguna manera de verificar la creación del perfil de los usuarios para resolver este problema? –

+0

no funciona refleja el último servicepack/actualización Fecha de instalación (EA la versión actual, no la versión original de la instalación. – user3800527

144

Otra pregunta elligeable para un 'code-challenge': aquí hay algunos ejecutables de código fuente para resolver el 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 es el número de segundos;)
Como Sammycomments, find /i "install" da más de lo necesario.
Y esto solo funciona si la configuración regional es el inglés: debe coincidir con el idioma.
Para sueco esto sería "ursprungligt" y "ursprüngliches" para alemán.


En PowerShell script de Windows, usted podría escribir:

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

Mediante el uso de WMI (Windows Management Instrumentation)

Si usted no utiliza WMI, debe leer a continuación, 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 s esa misma información. Escoger su veneno;)


en VB.Net que daría algo así 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), que 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 g o 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; 
+0

durante el uso de autoIt3.0 encontré tenemos que añadir el archivo de cabecera para la función _DateAdd y su # include shahjapan

+0

systeminfo | encontrar/i "instalar" no funciona para mí. Duno por qué ... – Pedro77

+0

@ Pedro77 ¿tiene un mensaje de error?o ¿Tiene un gnu find (http://superuser.com/q/312135/141) que enmascararía el comando "find.exe" del sistema de Windows? – VonC

13

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

acaba de ver esto ...

  • Inicio> introducir CMD
  • entrar systeminfo

eso es todo ; entonces puedes ver toda la información sobre tu máquina; método muy simple

2

También puede marcar la verificación de cualquier carpeta en la unidad del sistema como "ventanas" 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.

+5

Aunque es válido, esta no es una solución de programación –

+0

@Matt Él le dio el algoritmo en Natural Lenguaje, entonces ¡Copílelo en un dispositivo humano! : D – Jonathan

+1

En las versiones más nuevas de Windows, que utilizan la instalación basada en imágenes (archivos '.WIM'), la fecha de creación es cuando Microsoft creó la imagen, no cuando el sistema operativo se instaló en una máquina en particular. –

29

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.

+1

Tenga en cuenta que debe ser el administrador para hacer esto. –

+0

En Windows 7 esto da una entrada de "Fecha de instalación original" que por alguna razón es 11.1.2002, lo que claramente no es correcto :( – silverchair

+0

También funciona en Server 2008 R2. –

9

¿Alguna vez ha querido saber la fecha de instalación de su sistema operativo? Esta es una manera rápida y fácil de averiguar la fecha y la 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 -> Tipo de cmd-> pulsa enter) y ejecutar el siguiente comando

systeminfo | find/i "Fecha de instalación"

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

+0

hasta que instala un service pack principal, luego refleja esa fecha – user3800527

7

En Powershell ejecute el comando:

systeminfo | Select-String "Install Date:" 
+2

Select-String requiere Windows PowerShell versión> 3.0 mejor uso 'find/i' – sactiw

1

En EjecutarComando escritura "MSINFO32" y pulsa enter Se mostrará toda la información relacionada con el sistema

2

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate y systeminfo. exe produce el wrong date.

El definition de UNIX timestamp es independiente de la zona horaria. La marca de tiempo de UNIX se define como la cantidad de segundos transcurridos desde la 00:00:00 hora universal coordinada (UTC) del jueves 1 de enero de 1970 y sin contar los segundos intercalares.

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.

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

InstallDate está en el formato UTC (yyyymmddHHMMSS.xxxxxx ± UUU) según Microsoft TechNet article "Trabajo con fechas y tiempos mediante WMI", donde xxxxxx es notablemente milisegundos y ± UUU es el número de minutos diferente del meridiano 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);  
    } 
12

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

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

Original Install Date

He conseguido encontrar unos pocos fecha files` de la creación, que coincide con el real (limpia) la fecha de instalación de mi Windows 10:

  • en C:\Windows

Few C:\Windows files

  • en C:\

Few C:\ files

+1

Esta debería ser la respuesta correcta – traditional

+1

Mejor que las otras respuestas, pero ¿qué hay de las implementaciones con imágenes? – user3800527

+1

Esto es definitivamente más cercano a la respuesta correcta; 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 fueron más tarde y algunos en realidad antes). Sin embargo, encontré 1 archivo y 2 carpetas con el fecha correcta en mi sistema: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ symbols \, & C: \ Windows \ CSC \. Por lo tanto, si kn Cuando era aproximadamente, ve a C: \ Windows \, ​​muestra los archivos del sistema, ordena por fecha y encuentra algo que se vea bien. –

0

Windows 10 OS tiene una nueva subclave del registro, esta vez en el archivo de sección del sistema:

> "\Setup\Source OS." 

La información de fecha de instalación aquí es el sistema operativo del ordenador de instalación original de fecha/hora . También le informa cuando la actualización se inició, es decir

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

Esto puede, por supuesto, no será cuando termina la actualización, el usuario puede optar por desactivar en lugar de reiniciar cuando se le solicite, etc ...

El la actualización puede completarse en un día diferente, y

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

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

0

Prensa WindowsKey + R y entrar cmd

En el tipo de ventana de comandos:

systeminfo | find /i "Original" 

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

Cuestiones relacionadas