Cela peut sembler une question un peu folle, mais comment puis-je connaître (espérons-le via une API/clé de registre) la date et l'heure d'installation de Windows?
Le mieux que je puisse faire jusqu'ici est d'examiner divers fichiers dans C:\Windows et d'essayer de les deviner ... mais ce n'est pas exactement une solution intéressante.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
C'est donné comme le nombre de secondes depuis le 1er janvier 1970.
Pour convertir ce nombre en une date/heure lisible, il suffit de coller la valeur décimale dans le champ "UNIX TimeStamp:" de this outil en ligne de conversion temporelle Unix .
Une autre question elligeable pour un 'code-challenge': voici quelques exécutables de code source pour répondre au problème, mais ils sont incomplet.
Trouverez-vous un script vb que tout le monde 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;)
As Sammycommentaires , find /i "install"
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 "ursprungligt
" et "ursprüngliches
"pour l'allemand.
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 à cette même information. Choisis ton poison ;)
En 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 irait comme:
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;
Nous avons assez de réponses ici, mais je veux mettre mes 5 cents.
J'ai Windows 10 installé sur 10/30/2015
et Creators Update sont installés sur 04/14/2017
en plus de mon installation précédente. Toutes les méthodes décrites dans les réponses précédant la mienne me donnent la date d'installation de Creators Update.
J'ai réussi à trouver quelques fichiers date de création qui correspond à la date d'installation réelle (propre) de Windows 10:
C:\Windows
C:\
Ouvrir 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 dans XP, Win7 et aussi sur win8.
Comment connaître la date/heure d'installation de Windows 7:
viens voir ça ...
c'est ça; alors vous pouvez voir toutes les informations sur votre machine; méthode très simple
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 d'installation du système d'exploitation de votre PC (ou de la dernière mise à jour).
Ouvrez la commande Invite (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
Dans Powershell, exécutez la commande:
systeminfo | Select-String "Install Date:"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate et systeminfo.exe produisent le date erronée.
Le définition de l'horodatage UNIX est indépendant du fuseau horaire. L'horodatage UNIX est défini comme le nombre de secondes écoulées depuis 00:00:00, heure universelle coordonnée (UTC), le jeudi 1er janvier 1970, sans compter les secondes intercalaires.
En d’autres termes, si vous avez installé votre ordinateur à Seattle, WA et que vous avez déménagé à New York, NY, le fichier HKLM\LOGICIEL\Microsoft\Windows NT\CurrentVersion\InstallDate ne reflétera pas cela. C'est la mauvaise date , il ne stocke pas le fuseau horaire dans lequel l'ordinateur a été initialement installé.
Cela a pour effet si vous modifiez le fuseau horaire pendant l'exécution de ce programme, la date sera fausse. Vous devez réexécuter l'exécutable pour qu'il puisse prendre en compte le changement de fuseau horaire.
Mais vous pouvez obtenir les informations de fuseau horaire de la classe WMI Win32_Registry .
InstallDate est au format UTC (yyyymmddHHMMSS.xxxxxx ± UUU) selon Microsoft TechNet article "Utilisation des dates et des heures à l'aide de WMI" où notamment xxxxxx est exprimé en millisecondes et ± UUU est le nombre de minutes différent de Greenwich Mean Temps.
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);
}
Le système d'exploitation Windows 10 a encore une autre sous-clé de registre, celle-ci dans le fichier SYSTEM Hive:
> "\Setup\Source OS."
Les informations relatives à la date d'installation correspondent à la date/heure d'installation du système d'exploitation de l'ordinateur d'origine. Il vous indique également quand la mise à jour a commencé, c.-à-d.
"\Setup\Source OS (Updated on xxxxxx)."
Bien entendu, cela peut ne pas arriver à la fin de la mise à jour. L’utilisateur peut choisir d’éteindre au lieu de redémarrer à la demande, etc.
La mise à jour peut effectivement se terminer un autre jour, et
> "\Setup\Source OS (Updated on xxxxxx)"
reflétera la date/heure de début de la mise à jour.
Je trouve la date de création de c:\pagefile.sys peut être assez fiable dans la plupart des cas. Vous pouvez facilement l'obtenir à l'aide de cette commande (en supposant que Windows est installé sur C :):
dir /as /t:c c:\pagefile.sys
Le '/ as' spécifie les 'fichiers système', sinon il ne sera pas trouvé. Le '/ t: c' définit le champ de temps pour afficher 'création'.
Déterminer la date d'installation de Windows avec WMIC
wmic os obtenir installdate
Dans RunCommand, écrivez "MSINFO32"
et appuyez sur Entrée. Toutes les informations relatives au système s'affichent.
Utilisez speccy. Il montre la date d'installation dans la section Système d'exploitation. http://www.piriform.com/speccy
Vous pouvez également vérifier la vérification de tous les dossiers du lecteur système tels que "Windows" et "Fichiers de programme". Cliquez avec le bouton droit sur le dossier, cliquez sur les propriétés et vérifiez sous l'onglet Général la date à laquelle le dossier a été créé.
Vous pouvez simplement vérifier la date de création du dossier Windows (cliquez dessus avec le bouton droit de la souris et vérifiez les propriétés) :)
Presse WindowsKey + R et entrez cmd
Dans la fenêtre de commande, tapez:
systeminfo | find /i "Original"
(pour les anciennes versions de Windows, tapez "ORIGINAL" en lettres majuscules).