Comment savoir à quelle fréquence Windows Seven a redémarré?

18

Où sur le système ou le registre dois-je rechercher des données sur le nombre de redémarrages de Windows? Je veux créer une application qui utilise ces informations (combien de fois Windows a redémarré depuis le processus OOBE *) pour implémenter une fonctionnalité spécifique.

Je suis sûr que Microsoft a peut-être implémenté cela quelque part. Je pense à une clé de registre ou quelque chose comme ça.

* OOBE - Out Of Box Experience, c'est le processus qui se produit lorsque vous démarrez votre Windows pour la première fois et configurez les noms d'utilisateur, de mot de passe et d'ordinateur.

Diogo
la source
En parcourant attentivement les journaux d'événements, vous pouvez comprendre cela, mais je ne pense pas qu'il soit réellement enregistré spécifiquement quelque part ... hmm. J'espère que je me trompe!
Shinrai

Réponses:

17

Chaque démarrage et arrêt est enregistré dans les journaux des événements. Ouvrez l'Observateur d'événements et accédez à la section Journaux système. Si vous filtrez ces enregistrements (utilisez le Filter Current Logbouton à droite) par les numéros d'événement 12 et 13, vous devez simplement obtenir les événements pour vous informer de l'arrêt et du démarrage du système.

L'ID d'événement 12 est le démarrage du système, l'ID d'événement 13 est l'arrêt du système. Il fournit également l'heure exacte à laquelle l'événement a été enregistré dans l'événement lui-même.

Vous pouvez demander à votre application de compter le nombre d'événements avec l'ID d'événement 12, qui devrait vous donner ce que vous voulez.

Connor W
la source
5
Bonne pensée, mais il y a des mises en garde: les journaux des événements peuvent être effacés par un utilisateur, et ils sont limités à une taille maximale, donc il ne rapporterait pas nécessairement le nombre total de redémarrages, surtout s'il s'agit d'une ancienne installation.
rmart
@rmart Je ne sais pas si l'utilisateur moyen nettoierait les journaux des événements, mais ce sont deux points justes. Je pense que l'utilisation des données SMART comme mentionné ci-dessus est probablement une meilleure façon, mais ce n'est pas sans mises en garde non plus.
Connor W
12

J'ai trouvé la réponse.

Découvrez:

"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\BootId" 

La valeur, en décimale, que vous verrez est le nombre de fois que votre système a déjà redémarré.

Diogo
la source
576 fois, une question et une réponse très intéressantes. +1 de moi.
Joe Taylor
7

Voici une autre façon: SMART

De nos jours, la grande majorité des disques durs stockent des informations SMART. Il y a deux informations qui pourraient vous intéresser: 04 Start / Stop Count 12 Power Cycle Count

Consultez l' article de wikipedia sur SMART et éventuellement la documentation de smartmontools.

smartmontools est un projet open-source qui peut interroger ces données dans une CLI, ou il existe d'autres programmes qui peuvent obtenir ces données avec diverses interfaces graphiques: liste Wikipedia d'outils SMART

camster342
la source
Je pense que c'est probablement une méthode plus fiable que d'utiliser l'Observateur d'événements, mais il a aussi ses mises en garde. À moins que le lecteur n'ait été dans le même ordinateur dès le premier jour, sans être changé ou utilisé ailleurs, vous n'obtiendrez pas de résultats précis. De plus, je pense que les disques plus anciens ne prennent pas totalement en charge S..MART, vous pouvez donc trouver certains disques qui enregistrent des informations sur le cycle d'alimentation, et d'autres non.
Connor W
@Connor W: Je devinais que le type de disques durs qui n'enregistrent pas d'informations SMART était peu susceptible d'être dans une machine suffisamment puissante pour exécuter Windows 7, mais oui, vous avez tout à fait raison, cela ne peut pas être invoqué. Tout comme l'observateur d'événements ....
camster342
Et qu'en est-il si l'utilisateur utilise le mode veille ou si le disque dur s'éteint en raison d'une inactivité?
sinni800
@Sinni: C'est la différence entre le code 04 et le code 12. 04 est une rotation totale du disque dur qui inclurait des modes veille et économie d'énergie. 12 est l'endroit où le disque dur perd complètement son alimentation, à partir de l'arrêt ou de la mise en veille prolongée du PC.
camster342
2

Découvrez le gestionnaire de fiabilité dans Windows 7

uSlackr
la source
3
Cela ne vous dit pas vraiment quand l'ordinateur a démarré ou arrêté.
Connor W
1

J'ai écrit deux courts scripts qui peuvent compter le nombre de fois qu'un ordinateur s'est allumé.

Malheureusement, il n'y a pas de journal des événements spécifiquement pour les redémarrages, uniquement lorsque Windows démarre et s'arrête.

Ce script recherche le journal des événements event 12qui est enregistré au démarrage de Windows. Il vous indique ensuite combien de fois il a compté.

Script VBS: compte le nombre de fois que l'ordinateur s'est allumé

count = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count

Script VBS: compte à distance le nombre de fois que l'ordinateur a été allumé:

count = 0
strComputer=InputBox ("Enter the network name for the remote computer")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count 

Script VBS source - Nombre de fois que l'ordinateur a été allumé

ovann86
la source
S'il s'agit de votre site Web vers lequel vous créez un lien (ces liens que vous venez de mettre à jour), veuillez noter que vous devez divulguer votre affiliation avec celui-ci. Voir superuser.com/help/behavior
slhck
@slhck - oui, je fais référence à mon blog personnel. Je n'étais pas au courant de ces règles. Y a-t-il une ligne standard que je devrais utiliser pour indiquer clairement que je fais référence à du contenu qui se trouve également sur mon blog personnel? J'ai posté toutes les réponses il y a longtemps quand j'ai eu le temps, je change de nom de domaine et je veux mettre à jour les liens avant l'expiration du domaine. Je gère mon blog personnel pour enregistrer les choses dont je dois me souvenir et partager les connaissances, d'où la publication croisée entre super-utilisateurs.
ovann86
1
Veuillez être explicite et dire "mon blog" ou quelque chose. Tant que vous assurez - vous que les réponses réelles sont contenues ici, et les gens n'ont de quitter le site pour obtenir une solution, il va bien. L'ajout de liens pour les détails est toujours correct.
slhck