Comment trouver l'heure et la date d'installation de Windows?

134

Cela peut sembler une question un peu folle, mais comment puis-je connaître (espérons-le via une clé API / registre) l'heure et la date d'installation de Windows?

Le mieux que je puisse trouver jusqu'à présent est de regarder divers fichiers dans C: \ Windows et d'essayer de deviner ... mais ce n'est pas exactement une bonne solution.

Gnou gratuit
la source

Réponses:

90

En regedit.exealler à:

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

Il est donné en nombre de secondes depuis le 1er janvier 1970. (Remarque: pour Windows 10, cette date correspondra à celle de la dernière mise à jour des fonctionnalités, et non à la date d'installation d'origine.)

Pour convertir ce nombre en une date / heure lisible, collez simplement la valeur décimale dans le champ "UNIX TimeStamp:" de cet outil en ligne Unix Time Conversion .

Tommy
la source
3
C'est génial, y a-t-il un endroit spécial où vous êtes allé pour obtenir ces informations ou le saviez-vous?
Gnou gratuit
5
Fonctionne très bien, sauf si Windows a été installé à l'aide d'une image disque. Existe-t-il un moyen de vérifier la création du profil des utilisateurs pour résoudre ce problème?
Bernard Vander Beken
8
Ne fonctionne pas reflète la dernière date d'installation du Servicepack / mise à jour (par exemple, la version ACTUELLE, pas l'heure d'installation de la version d'origine.
user3800527
2
Je pense que cela donne la dernière date de mise à jour de Windows, au lieu de la date d'installation du système.
Tharindu Sathischandra
mon installation de Windows 7 n'affiche pas InstallDate dans cet emplacement de registre, son SP1.
user734028
175

Autre question elligeable pour un ' code-challenge ': voici quelques exécutables de code source pour répondre au problème, mais ils ne sont pas complets.
Trouverez-vous un script vb que n'importe qui peut exécuter sur son ordinateur, avec le résultat attendu?


systeminfo|find /i "original" 

vous donnerait la date réelle ... pas le nombre de secondes;)
Comme le commente Sammy , donne plus que ce dont vous avez besoin. Et cela ne fonctionne que si les paramètres régionaux sont l'anglais: il doit correspondre à la langue. Pour le suédois, ce serait " " et " " pour l'allemand.find /i "install"

ursprungligtursprüngliches


Dans le script Windows PowerShell , vous pouvez simplement taper:

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

En utilisant WMI ( Windows Management Instrumentation )

Si vous n'utilisez pas WMI, vous devez lire puis convertir la valeur de registre:

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"

Le reste de cet article vous donne d'autres moyens d'accéder à ces mêmes informations. Choisissez votre poison ;)


Dans VB.Net, cela donnerait quelque chose comme:

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

Dans Autoit (un langage de script Windows), ce serait:

;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

Dans Delphy 7, cela ressemblerait à:

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;

En alternative, CoastN propose dans les commentaires :

Comme le system.ini-filereste intact dans un déploiement Windows typique, vous pouvez réellement obtenir la date d'installation en utilisant le oneliner suivant:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VonC
la source
2
J'ai découvert pourquoi. C'est parce que mon Windows n'est pas en anglais. :)
Pedro77
3
Utilisez systeminfo|find /i "original"pour filtrer uniquement la "Date d'installation d'origine". Si vous utilisez "install" comme chaîne, vous obtiendrez plus d'informations que nécessaire. De plus, si les paramètres régionaux ne sont pas anglais, cela ne fonctionnera probablement pas. Il doit correspondre à la langue. Pour le suédois, ce serait "ursprungligt" et "ursprüngliches" pour l'allemand.
Samir
1
Pour moi, systeminfo | find / i "original" est retourné le 30/06/2017 qui devait être une mise à jour de Windows car j'ai la machine depuis environ 4 ans.
Tim
1
Je viens de passer par là, mais avec 245 correctifs par défaut, la fenêtre CMD n'avait pas assez de lignes verticales pour afficher toute la sortie 'systeinfo'. Me grattait la tête pendant une minute. Suivez ceci pour le réparer: stackoverflow.com/questions/1740876/…
asdf30
1
Cela montre que j'ai installé le système il y a deux semaines, mais en fait, c'était un an ou deux. Il semble que ce soit une date de la dernière mise à jour importante.
hans
48

Nous avons assez de réponses ici mais je veux mettre mes 5 cents.

J'ai installé Windows 10 10/30/2015et Creators Update 04/14/2017en plus de mon installation précédente. Toutes les méthodes décrites dans les réponses avant la mienne me donnent la date de l'installation de Creators Update.

Date d'installation d'origine

J'ai réussi à trouver la date de création de quelques fichiers qui correspond à la date d'installation réelle (propre) de mon Windows 10:

  • dans C:\Windows

Quelques fichiers C: \ Windows

  • dans C:\

Peu de fichiers C: \

Nikolay Kostov
la source
7
Mieux que les autres réponses, mais qu'en est-il des déploiements imagés?
user3800527
7
C'est certainement plus proche de la bonne réponse; les autres solutions ne fonctionnent plus avec les mises à niveau de Windows 10. Cependant, aucun des 5 fichiers / dossiers répertoriés ici n'avait la date correcte sur mon système (certains étaient plus tardifs et d'autres plus tôt). Cependant, j'ai trouvé 1 fichier et 2 dossiers avec la date correcte sur mon système: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ symboles \, & C: \ Windows \ CSC \. Donc, si vous savez quand c'était approximativement, allez dans C: \ Windows \, ​​affichez les fichiers système du système, triez par date et trouvez quelque chose qui semble correct.
Matt Jacobi
Pour mon Windows 10 system.ini, BOOTNXT et bootmgr avaient la date correcte. Win.ini et $ Recycle.Bin avaient des dates plus récentes.
Keith
La date pour system.inin'a aucun sens sur mes machines Windows 7 et 2008, il semble que l'horodatage créé à partir des sources d'installation est copié lors de l'installation. C:\pagefile.sysavait le bon horodatage.
Daniel Sokolowski
38

Ouvrez l'invite de commande, tapez " systeminfo " et appuyez sur Entrée. Votre système peut prendre quelques minutes pour obtenir les informations. Dans la page de résultats, vous trouverez une entrée comme "Date d'installation du système". C'est la date d'installation de Windows. Ce processus fonctionne sous XP, Win7 et également sur win8.

diptangshu sengupta
la source
1
Notez que vous devez être administrateur pour ce faire.
Barrie Reader
2
Sur Windows 7, cela donne une entrée "Date d'installation d'origine" qui, pour une raison quelconque, est le 11.1.2002, ce qui n'est clairement pas correct :(
silverchair
18

Comment connaître la date et l'heure d'installation de Windows 7:

vois juste ça ...

  • démarrer> entrer CMD
  • entrez systeminfo

c'est tout; alors vous pouvez voir toutes les informations sur votre machine; méthode très simple

ani alexander
la source
13

Vous avez toujours voulu connaître la date d'installation du système d'exploitation de votre PC? Voici un moyen rapide et facile de connaître la date et l'heure de l'installation (ou de la dernière mise à niveau) du système d'exploitation de votre PC.

Ouvrez l'invite de commande (démarrer-> exécuter -> tapez cmd-> appuyez sur Entrée) et exécutez la commande suivante

systeminfo | find / i "date d'installation"

Dans quelques secondes, vous verrez la date d'installation

Robin
la source
3
jusqu'à ce que vous installiez un service pack majeur, il reflète cette date
user3800527
12

Dans Powershell, exécutez la commande:

systeminfo | Select-String "Install Date:"
user3827180
la source
2
Select-String nécessite Windows PowerShell version> 3.0 meilleure utilisationfind /i
sactiw
5

Le système d'exploitation Windows 10 a encore une autre sous-clé de registre, celle-ci dans le fichier SYSTEM Hive:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Les informations de date d'installation ici correspondent à la date / heure d'installation du système d'exploitation d'origine de l'ordinateur. Il vous indique également quand la mise à jour a commencé, c'est-à-dire

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

Cela peut bien sûr ne pas être lorsque la mise à jour se termine, l'utilisateur peut choisir de désactiver au lieu de redémarrer à l'invite, etc.

La mise à jour peut en fait se terminer un autre jour, et

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

reflétera la date et l'heure auxquelles la mise à jour a commencé.

Amit Gupta
la source
4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate et systeminfo.exe produisent une date incorrecte .

La définition de l'horodatage UNIX est indépendante du fuseau horaire. L'horodatage UNIX est défini comme le nombre de secondes qui se sont écoulées depuis 00:00:00 UTC (temps universel coordonné), jeudi 1er janvier 1970, sans compter les secondes intercalaires.

En d'autres termes, si vous avez installé votre ordinateur à Seattle, WA et déménagé à New York, NY, HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate ne reflètera pas cela. C'est la mauvaise date , il ne stocke pas le fuseau horaire où l'ordinateur a été initialement installé.

L'effet de ceci est que si vous modifiez le fuseau horaire pendant l'exécution de ce programme, la date sera erronée. Vous devez réexécuter l'exécutable pour qu'il tienne compte du changement de fuseau horaire.

Mais vous pouvez obtenir les informations de fuseau horaire à partir de la classe WMI Win32_Registry .

InstallDate est au format UTC (aaaammjjHHMMSS.xxxxxx ± UUU) selon l' article Microsoft TechNet «Travailler avec les dates et les heures à l' aide de WMI» où notamment xxxxxx correspond à des millisecondes et ± UUU est un nombre de minutes différent de l'heure 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
la source
La définition d'un horodatage UNIX inclut un fuseau horaire, UTC. Si un ordinateur est installé à 18 h 00, heure de New York et à 15 h 00, heure de Seattle, le même jour, ils auront le même horodatage UNIX car ils ont été installés à la même heure UTC. Si vous avez installé le 1er avril 2018 à 15h00 à Seattle et déménagez à New York, puis convertissez l'heure UTC en heure locale, cela indiquera le 1er avril 2018 à 18h00 et sera correct, car il était 6 : 00 PM à New York lors de l'installation à Seattle.
jla
Merci jla, je n'ai pas été clair dans mon post. Lorsque vous changez le fuseau horaire à la volée pendant que le programme est en cours d'exécution, le changement de fuseau horaire ne sera pas reflété. Vous devez redémarrer le programme pour que le fuseau horaire prenne effet. C'est le même comportement que Powershell.
Markus
InstallDate renvoie l'heure locale avec le fuseau horaire actuel appliqué, ainsi que le fuseau horaire sous la forme + XXX. Lorsque le fuseau horaire change, la date d'installation change ainsi que le fuseau horaire. Si la date d'installation en UTC était le 2000-01-01T12: 00: 00Z. La date d'installation est 20000101120000.000000 + 000. Réglez le fuseau horaire sur UTC + 5, et il devient 20000101170000.000000 + 300. Lorsque vous utilisez le code ci-dessus, le fuseau horaire est ajouté deux fois. Pour obtenir la date UTC, la ligne "InstallDate =" doit être remplacée par: InstallDate = new DateTime (année, mois, date, heure, minutes, secondes, msecs, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Je trouve que la date de création de c: \ pagefile.sys peut être assez fiable dans la plupart des cas. Il peut être facilement obtenu en utilisant cette commande (en supposant que Windows est installé sur C :):

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

Le «/ as» spécifie «fichiers système», sinon il ne sera pas trouvé. Le «/ t: c» définit le champ de temps pour afficher «création».

MoonDogg
la source
1
Cela donnerait la date de création du fichier d'échange, qui n'a aucun rapport avec la date d'installation du système d'exploitation lui-même. Il peut être recréé pour un certain nombre de raisons et même falsifié si vous le souhaitez vraiment. Ce n'est pas une méthode fiable.
Alejandro le
1
Ce n'est pas «totalement indépendant», car il est créé lors de l'installation initiale. Donc, à moins qu'elle n'ait été recréée ou supprimée intentionnellement à un moment donné, dans la plupart des cas, la date de création sera la même que la date d'installation initiale, car elle persiste pendant les mises à niveau. Oui, ce n'est pas fiable à 100%, mais c'est rapide et facile, et je suppose que c'est précis dans bien plus de cas qu'autrement. Certainement plus que la plupart des réponses ici.
MoonDogg
Vous pouvez recréer ce fichier à tout moment et si la méthode ne garantit pas le bon résultat à 100%, personne ne peut vraiment s'y fier.
Slava Murygin
2

Déterminez la date d'installation de Windows avec WMIC

wmic os obtenir la date d'installation

Lko Jegue
la source
1
Cela lit probablement simplement la clé de registre InstallDate et présente le même problème; il change sur les mises à jour de build.
Anders
1

Utilisez speccy. Il montre la date d'installation dans la section Système d'exploitation. http://www.piriform.com/speccy

Amin
la source
1
Pas une solution de programmation. S'il existe une sorte d'interface avec laquelle Powershell (par exemple) peut interagir, indiquez-la.
Tyler Montney
1

Vous pouvez également vérifier le chèque n'importe quel dossier dans le lecteur système comme "windows" et "program files". Faites un clic droit sur le dossier, cliquez sur les propriétés et vérifiez sous l'onglet général la date de création du dossier.

Tekki
la source
5
Bien que valide - ce n'est pas une solution de programmation
Matt Wilko
@Matt Il vous donne l'algorithme de Natural Lenguaje, alors copiez-le simplement dans un appareil humain! : D
Jonathan
3
Dans les versions plus récentes de Windows, qui utilisent une installation basée sur une image ( .WIMfichiers), la date de création correspond au moment où Microsoft a créé l'image, et non au moment où le système d'exploitation a été installé sur une machine particulière.
ctype.h
1

Dans RunCommand, écrivez "MSINFO32"et appuyez sur Entrée.Il affichera toutes les informations relatives au système

Shailesh
la source
Toutes les informations sauf l'heure d'installation. Windows 7 SP1.
Pavel Vlasov
0

Appuyez sur WindowsKey+ Ret entrezcmd

Dans la fenêtre de commande, tapez:

systeminfo | find /i "Original"

(pour les anciennes versions de Windows, tapez "ORIGINAL" dans toutes les lettres majuscules).

abdullahjavaid86
la source
Quelqu'un sait pourquoi le vote négatif? A travaillé pour moi, n'est-ce pas exact pour une raison quelconque? Peut-être expliquer en donnant un vote contre
russelrillema
@russelrillema le dernier service pack majeur remplace cette date.
Don Tomato
Si vous avez Windows 10 v1809, accédez à Paramètres> Système> À propos. Trouvez la spécification Windows et là vous avez un champ sous le nom "Installer sur". (Remarque: je ne sais pas si cela fonctionne sur les anciennes versions de Windows)
abdullahjavaid86
0

Vous pouvez simplement vérifier la date de création du dossier Windows (clic droit dessus et vérifier les propriétés) :)

farhad.kargaran
la source
0

Vous pouvez le faire avec 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()}}
Lardons
la source
0

Essayez cette commande 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
la source
Presque vrai et cela devrait être noté beaucoup plus car cela prend en compte les mises à jour de build qui modifient la clé dans HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion mais il faut les deux combinés car les clés du système d'exploitation source ne sont même pas présentes si un système n'a jamais été mis à jour (encore) et il manquerait également la date de la dernière mise à jour de la version
Syberdoor